{
    "summary": {
        "snap": {
            "added": [],
            "removed": [],
            "diff": []
        },
        "deb": {
            "added": [
                "linux-headers-5.15.0-185",
                "linux-headers-5.15.0-185-generic",
                "linux-image-5.15.0-185-generic",
                "linux-modules-5.15.0-185-generic"
            ],
            "removed": [
                "linux-headers-5.15.0-181",
                "linux-headers-5.15.0-181-generic",
                "linux-image-5.15.0-181-generic",
                "linux-modules-5.15.0-181-generic"
            ],
            "diff": [
                "libperl5.34",
                "libxml2",
                "linux-headers-generic",
                "linux-headers-virtual",
                "linux-image-virtual",
                "linux-virtual",
                "perl",
                "perl-base",
                "perl-modules-5.34",
                "tar",
                "vim",
                "vim-common",
                "vim-runtime",
                "vim-tiny",
                "xxd"
            ]
        }
    },
    "diff": {
        "deb": [
            {
                "name": "libperl5.34",
                "from_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.5",
                    "version": "5.34.0-3ubuntu1.5"
                },
                "to_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.7",
                    "version": "5.34.0-3ubuntu1.7"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-42496",
                        "url": "https://ubuntu.com/security/CVE-2026-42496",
                        "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 02:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: accept quantifier limit error",
                            "      on 32-bit architectures where the quantifier limit catches the",
                            "      oversized pattern before the overflow guard",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.7",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Mon, 23 Jun 2026 11:11:00 +0300"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-42496",
                                "url": "https://ubuntu.com/security/CVE-2026-42496",
                                "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 02:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: path traversal in Archive::Tar symlink/hardlink extraction",
                            "    - debian/patches/CVE-2026-42496.patch: validate symlink and hardlink",
                            "      targets against absolute paths and directory traversal in",
                            "      cpan/Archive-Tar/lib/Archive/Tar.pm",
                            "    - CVE-2026-42496",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: add test cases for heap buffer",
                            "      overflow via quantified fixed-string regex in t/re/pat_psycho.t",
                            "    - debian/patches/CVE-2026-8376_2.patch: add overflow check before",
                            "      fixed-string buffer allocation in regcomp.c / regcomp_study.c",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.6",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Fri, 12 Jun 2026 16:42:26 +0300"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libxml2",
                "from_version": {
                    "source_package_name": "libxml2",
                    "source_package_version": "2.9.13+dfsg-1ubuntu0.11",
                    "version": "2.9.13+dfsg-1ubuntu0.11"
                },
                "to_version": {
                    "source_package_name": "libxml2",
                    "source_package_version": "2.9.13+dfsg-1ubuntu0.12",
                    "version": "2.9.13+dfsg-1ubuntu0.12"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-6653",
                        "url": "https://ubuntu.com/security/CVE-2026-6653",
                        "cve_description": "Use After Free in libxml2's xmlParseInternalSubset from GNOME libxml2 version 2.9.11 to 2.11.0 allows a remote attacker to cause a denial-of-service via maliciously crafted XML input with improper entity resolution handling.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-22 14:17:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-6653",
                                "url": "https://ubuntu.com/security/CVE-2026-6653",
                                "cve_description": "Use After Free in libxml2's xmlParseInternalSubset from GNOME libxml2 version 2.9.11 to 2.11.0 allows a remote attacker to cause a denial-of-service via maliciously crafted XML input with improper entity resolution handling.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-22 14:17:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: heap-use-after-free in xmlParseInternalSubset",
                            "    - debian/patches/CVE-2026-6653.patch: rework entity amplification",
                            "      checks in parser.c, parserInternals.c, SAX2.c, entities.c,",
                            "      include/libxml/entities.h and include/libxml/parser.h.",
                            "    - CVE-2026-6653",
                            ""
                        ],
                        "package": "libxml2",
                        "version": "2.9.13+dfsg-1ubuntu0.12",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Sudhakar Verma <sudhakar.verma@canonical.com>",
                        "date": "Thu, 30 Apr 2026 16:49:59 +0530"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-generic",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.181.164",
                    "version": "5.15.0.181.164"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.185.166",
                    "version": "5.15.0.185.166"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-185",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.185.166",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 18:28:36 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-184",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.184.165",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:25:35 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-183",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.183.164",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Sat, 23 May 2026 00:56:58 +0200"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-virtual",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.181.164",
                    "version": "5.15.0.181.164"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.185.166",
                    "version": "5.15.0.185.166"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-185",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.185.166",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 18:28:36 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-184",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.184.165",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:25:35 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-183",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.183.164",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Sat, 23 May 2026 00:56:58 +0200"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-virtual",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.181.164",
                    "version": "5.15.0.181.164"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.185.166",
                    "version": "5.15.0.185.166"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-185",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.185.166",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 18:28:36 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-184",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.184.165",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:25:35 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-183",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.183.164",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Sat, 23 May 2026 00:56:58 +0200"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-virtual",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.181.164",
                    "version": "5.15.0.181.164"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "5.15.0.185.166",
                    "version": "5.15.0.185.166"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-185",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.185.166",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 18:28:36 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-184",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.184.165",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:25:35 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-183",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "5.15.0.183.164",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Sat, 23 May 2026 00:56:58 +0200"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "perl",
                "from_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.5",
                    "version": "5.34.0-3ubuntu1.5"
                },
                "to_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.7",
                    "version": "5.34.0-3ubuntu1.7"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-42496",
                        "url": "https://ubuntu.com/security/CVE-2026-42496",
                        "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 02:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: accept quantifier limit error",
                            "      on 32-bit architectures where the quantifier limit catches the",
                            "      oversized pattern before the overflow guard",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.7",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Mon, 23 Jun 2026 11:11:00 +0300"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-42496",
                                "url": "https://ubuntu.com/security/CVE-2026-42496",
                                "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 02:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: path traversal in Archive::Tar symlink/hardlink extraction",
                            "    - debian/patches/CVE-2026-42496.patch: validate symlink and hardlink",
                            "      targets against absolute paths and directory traversal in",
                            "      cpan/Archive-Tar/lib/Archive/Tar.pm",
                            "    - CVE-2026-42496",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: add test cases for heap buffer",
                            "      overflow via quantified fixed-string regex in t/re/pat_psycho.t",
                            "    - debian/patches/CVE-2026-8376_2.patch: add overflow check before",
                            "      fixed-string buffer allocation in regcomp.c / regcomp_study.c",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.6",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Fri, 12 Jun 2026 16:42:26 +0300"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "perl-base",
                "from_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.5",
                    "version": "5.34.0-3ubuntu1.5"
                },
                "to_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.7",
                    "version": "5.34.0-3ubuntu1.7"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-42496",
                        "url": "https://ubuntu.com/security/CVE-2026-42496",
                        "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 02:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: accept quantifier limit error",
                            "      on 32-bit architectures where the quantifier limit catches the",
                            "      oversized pattern before the overflow guard",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.7",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Mon, 23 Jun 2026 11:11:00 +0300"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-42496",
                                "url": "https://ubuntu.com/security/CVE-2026-42496",
                                "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 02:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: path traversal in Archive::Tar symlink/hardlink extraction",
                            "    - debian/patches/CVE-2026-42496.patch: validate symlink and hardlink",
                            "      targets against absolute paths and directory traversal in",
                            "      cpan/Archive-Tar/lib/Archive/Tar.pm",
                            "    - CVE-2026-42496",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: add test cases for heap buffer",
                            "      overflow via quantified fixed-string regex in t/re/pat_psycho.t",
                            "    - debian/patches/CVE-2026-8376_2.patch: add overflow check before",
                            "      fixed-string buffer allocation in regcomp.c / regcomp_study.c",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.6",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Fri, 12 Jun 2026 16:42:26 +0300"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "perl-modules-5.34",
                "from_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.5",
                    "version": "5.34.0-3ubuntu1.5"
                },
                "to_version": {
                    "source_package_name": "perl",
                    "source_package_version": "5.34.0-3ubuntu1.7",
                    "version": "5.34.0-3ubuntu1.7"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-42496",
                        "url": "https://ubuntu.com/security/CVE-2026-42496",
                        "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 02:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-8376",
                        "url": "https://ubuntu.com/security/CVE-2026-8376",
                        "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-26 00:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: accept quantifier limit error",
                            "      on 32-bit architectures where the quantifier limit catches the",
                            "      oversized pattern before the overflow guard",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.7",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Mon, 23 Jun 2026 11:11:00 +0300"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-42496",
                                "url": "https://ubuntu.com/security/CVE-2026-42496",
                                "cve_description": "Archive::Tar versions before 3.08 for Perl extract symlinks with attacker controlled targets outside the extraction directory.  _make_special_file() passes the tar header's linkname to symlink() without validating it against absolute paths or .. segments. The secure-extract mode check that guards regular file extraction does not cover the symlink target.  A subsequent open through the extracted name reads or writes the attacker chosen path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 02:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-8376",
                                "url": "https://ubuntu.com/security/CVE-2026-8376",
                                "cve_description": "Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds.  Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer.  A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-26 00:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: path traversal in Archive::Tar symlink/hardlink extraction",
                            "    - debian/patches/CVE-2026-42496.patch: validate symlink and hardlink",
                            "      targets against absolute paths and directory traversal in",
                            "      cpan/Archive-Tar/lib/Archive/Tar.pm",
                            "    - CVE-2026-42496",
                            "  * SECURITY UPDATE: integer overflow in regular expression compiler",
                            "    - debian/patches/CVE-2026-8376_1.patch: add test cases for heap buffer",
                            "      overflow via quantified fixed-string regex in t/re/pat_psycho.t",
                            "    - debian/patches/CVE-2026-8376_2.patch: add overflow check before",
                            "      fixed-string buffer allocation in regcomp.c / regcomp_study.c",
                            "    - CVE-2026-8376",
                            ""
                        ],
                        "package": "perl",
                        "version": "5.34.0-3ubuntu1.6",
                        "urgency": "high",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Chrisa Oikonomou <chrisa.oikonomou@canonical.com>",
                        "date": "Fri, 12 Jun 2026 16:42:26 +0300"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "tar",
                "from_version": {
                    "source_package_name": "tar",
                    "source_package_version": "1.34+dfsg-1ubuntu0.1.22.04.2",
                    "version": "1.34+dfsg-1ubuntu0.1.22.04.2"
                },
                "to_version": {
                    "source_package_name": "tar",
                    "source_package_version": "1.34+dfsg-1ubuntu0.1.22.04.3",
                    "version": "1.34+dfsg-1ubuntu0.1.22.04.3"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-5704",
                        "url": "https://ubuntu.com/security/CVE-2026-5704",
                        "cve_description": "A flaw was found in tar. A remote attacker could exploit this vulnerability by crafting a malicious archive, leading to hidden file injection with fully attacker-controlled content. This bypasses pre-extraction inspection mechanisms, potentially allowing an attacker to introduce malicious files onto a system without detection.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-06 16:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-5704",
                                "url": "https://ubuntu.com/security/CVE-2026-5704",
                                "cve_description": "A flaw was found in tar. A remote attacker could exploit this vulnerability by crafting a malicious archive, leading to hidden file injection with fully attacker-controlled content. This bypasses pre-extraction inspection mechanisms, potentially allowing an attacker to introduce malicious files onto a system without detection.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-06 16:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: file injection via crafted archive",
                            "    - debian/patches/CVE-2026-5704.patch: always call skip_member() after",
                            "      extraction in extract_archive(), remove conditional skip_member()",
                            "      from purge_directory(), skip directory data in skim_member(), and",
                            "      stop forcing LNKTYPE size to zero in read_header().",
                            "    - CVE-2026-5704",
                            ""
                        ],
                        "package": "tar",
                        "version": "1.34+dfsg-1ubuntu0.1.22.04.3",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Leonidas Da Silva Barbosa <leo.barbosa@canonical.com>",
                        "date": "Fri, 19 Jun 2026 13:40:04 -0300"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "vim",
                "from_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.31",
                    "version": "2:8.2.3995-1ubuntu2.31"
                },
                "to_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.32",
                    "version": "2:8.2.3995-1ubuntu2.32"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-47162",
                        "url": "https://ubuntu.com/security/CVE-2026-47162",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-47167",
                        "url": "https://ubuntu.com/security/CVE-2026-47167",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52858",
                        "url": "https://ubuntu.com/security/CVE-2026-52858",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52860",
                        "url": "https://ubuntu.com/security/CVE-2026-52860",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52859",
                        "url": "https://ubuntu.com/security/CVE-2026-52859",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-47162",
                                "url": "https://ubuntu.com/security/CVE-2026-47162",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-47167",
                                "url": "https://ubuntu.com/security/CVE-2026-47167",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52858",
                                "url": "https://ubuntu.com/security/CVE-2026-52858",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52860",
                                "url": "https://ubuntu.com/security/CVE-2026-52860",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52859",
                                "url": "https://ubuntu.com/security/CVE-2026-52859",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: Code injection via NetrwBookHistSave().",
                            "    - debian/patches/CVE-2026-47162.patch: Properly quote the directory name",
                            "      in runtime/autoload/netrw.vim.",
                            "    - CVE-2026-47162",
                            "  * SECURITY UPDATE: Code Injection in cucumber filetype plugin.",
                            "    - debian/patches/CVE-2026-47167.patch: Use rubys Regexp.new() in",
                            "      runtime/ftplugin/cucumber.vim.",
                            "    - CVE-2026-47167",
                            "  * SECURITY UPDATE: Code execution with python3complete.",
                            "    - debian/patches/CVE-2026-52858.patch: Disable execution of import/from",
                            "      statements in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - debian/patches/CVE-2026-52860.patch: Strip default expressions and",
                            "      annotations in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - CVE-2026-52858",
                            "    - CVE-2026-52860",
                            "  * SECURITY UPDATE: Out-of-bounds read in update_snapshot().",
                            "    - debian/patches/CVE-2026-52859.patch: Bound loop in handle_pushline() in",
                            "      src/terminal.c.",
                            "    - CVE-2026-52859",
                            ""
                        ],
                        "package": "vim",
                        "version": "2:8.2.3995-1ubuntu2.32",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Kyle Kernick <kyle.kernick@canonical.com>",
                        "date": "Mon, 15 Jun 2026 16:18:48 -0600"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "vim-common",
                "from_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.31",
                    "version": "2:8.2.3995-1ubuntu2.31"
                },
                "to_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.32",
                    "version": "2:8.2.3995-1ubuntu2.32"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-47162",
                        "url": "https://ubuntu.com/security/CVE-2026-47162",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-47167",
                        "url": "https://ubuntu.com/security/CVE-2026-47167",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52858",
                        "url": "https://ubuntu.com/security/CVE-2026-52858",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52860",
                        "url": "https://ubuntu.com/security/CVE-2026-52860",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52859",
                        "url": "https://ubuntu.com/security/CVE-2026-52859",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-47162",
                                "url": "https://ubuntu.com/security/CVE-2026-47162",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-47167",
                                "url": "https://ubuntu.com/security/CVE-2026-47167",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52858",
                                "url": "https://ubuntu.com/security/CVE-2026-52858",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52860",
                                "url": "https://ubuntu.com/security/CVE-2026-52860",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52859",
                                "url": "https://ubuntu.com/security/CVE-2026-52859",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: Code injection via NetrwBookHistSave().",
                            "    - debian/patches/CVE-2026-47162.patch: Properly quote the directory name",
                            "      in runtime/autoload/netrw.vim.",
                            "    - CVE-2026-47162",
                            "  * SECURITY UPDATE: Code Injection in cucumber filetype plugin.",
                            "    - debian/patches/CVE-2026-47167.patch: Use rubys Regexp.new() in",
                            "      runtime/ftplugin/cucumber.vim.",
                            "    - CVE-2026-47167",
                            "  * SECURITY UPDATE: Code execution with python3complete.",
                            "    - debian/patches/CVE-2026-52858.patch: Disable execution of import/from",
                            "      statements in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - debian/patches/CVE-2026-52860.patch: Strip default expressions and",
                            "      annotations in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - CVE-2026-52858",
                            "    - CVE-2026-52860",
                            "  * SECURITY UPDATE: Out-of-bounds read in update_snapshot().",
                            "    - debian/patches/CVE-2026-52859.patch: Bound loop in handle_pushline() in",
                            "      src/terminal.c.",
                            "    - CVE-2026-52859",
                            ""
                        ],
                        "package": "vim",
                        "version": "2:8.2.3995-1ubuntu2.32",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Kyle Kernick <kyle.kernick@canonical.com>",
                        "date": "Mon, 15 Jun 2026 16:18:48 -0600"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "vim-runtime",
                "from_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.31",
                    "version": "2:8.2.3995-1ubuntu2.31"
                },
                "to_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.32",
                    "version": "2:8.2.3995-1ubuntu2.32"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-47162",
                        "url": "https://ubuntu.com/security/CVE-2026-47162",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-47167",
                        "url": "https://ubuntu.com/security/CVE-2026-47167",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52858",
                        "url": "https://ubuntu.com/security/CVE-2026-52858",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52860",
                        "url": "https://ubuntu.com/security/CVE-2026-52860",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52859",
                        "url": "https://ubuntu.com/security/CVE-2026-52859",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-47162",
                                "url": "https://ubuntu.com/security/CVE-2026-47162",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-47167",
                                "url": "https://ubuntu.com/security/CVE-2026-47167",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52858",
                                "url": "https://ubuntu.com/security/CVE-2026-52858",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52860",
                                "url": "https://ubuntu.com/security/CVE-2026-52860",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52859",
                                "url": "https://ubuntu.com/security/CVE-2026-52859",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: Code injection via NetrwBookHistSave().",
                            "    - debian/patches/CVE-2026-47162.patch: Properly quote the directory name",
                            "      in runtime/autoload/netrw.vim.",
                            "    - CVE-2026-47162",
                            "  * SECURITY UPDATE: Code Injection in cucumber filetype plugin.",
                            "    - debian/patches/CVE-2026-47167.patch: Use rubys Regexp.new() in",
                            "      runtime/ftplugin/cucumber.vim.",
                            "    - CVE-2026-47167",
                            "  * SECURITY UPDATE: Code execution with python3complete.",
                            "    - debian/patches/CVE-2026-52858.patch: Disable execution of import/from",
                            "      statements in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - debian/patches/CVE-2026-52860.patch: Strip default expressions and",
                            "      annotations in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - CVE-2026-52858",
                            "    - CVE-2026-52860",
                            "  * SECURITY UPDATE: Out-of-bounds read in update_snapshot().",
                            "    - debian/patches/CVE-2026-52859.patch: Bound loop in handle_pushline() in",
                            "      src/terminal.c.",
                            "    - CVE-2026-52859",
                            ""
                        ],
                        "package": "vim",
                        "version": "2:8.2.3995-1ubuntu2.32",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Kyle Kernick <kyle.kernick@canonical.com>",
                        "date": "Mon, 15 Jun 2026 16:18:48 -0600"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "vim-tiny",
                "from_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.31",
                    "version": "2:8.2.3995-1ubuntu2.31"
                },
                "to_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.32",
                    "version": "2:8.2.3995-1ubuntu2.32"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-47162",
                        "url": "https://ubuntu.com/security/CVE-2026-47162",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-47167",
                        "url": "https://ubuntu.com/security/CVE-2026-47167",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52858",
                        "url": "https://ubuntu.com/security/CVE-2026-52858",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52860",
                        "url": "https://ubuntu.com/security/CVE-2026-52860",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52859",
                        "url": "https://ubuntu.com/security/CVE-2026-52859",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-47162",
                                "url": "https://ubuntu.com/security/CVE-2026-47162",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-47167",
                                "url": "https://ubuntu.com/security/CVE-2026-47167",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52858",
                                "url": "https://ubuntu.com/security/CVE-2026-52858",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52860",
                                "url": "https://ubuntu.com/security/CVE-2026-52860",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52859",
                                "url": "https://ubuntu.com/security/CVE-2026-52859",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: Code injection via NetrwBookHistSave().",
                            "    - debian/patches/CVE-2026-47162.patch: Properly quote the directory name",
                            "      in runtime/autoload/netrw.vim.",
                            "    - CVE-2026-47162",
                            "  * SECURITY UPDATE: Code Injection in cucumber filetype plugin.",
                            "    - debian/patches/CVE-2026-47167.patch: Use rubys Regexp.new() in",
                            "      runtime/ftplugin/cucumber.vim.",
                            "    - CVE-2026-47167",
                            "  * SECURITY UPDATE: Code execution with python3complete.",
                            "    - debian/patches/CVE-2026-52858.patch: Disable execution of import/from",
                            "      statements in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - debian/patches/CVE-2026-52860.patch: Strip default expressions and",
                            "      annotations in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - CVE-2026-52858",
                            "    - CVE-2026-52860",
                            "  * SECURITY UPDATE: Out-of-bounds read in update_snapshot().",
                            "    - debian/patches/CVE-2026-52859.patch: Bound loop in handle_pushline() in",
                            "      src/terminal.c.",
                            "    - CVE-2026-52859",
                            ""
                        ],
                        "package": "vim",
                        "version": "2:8.2.3995-1ubuntu2.32",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Kyle Kernick <kyle.kernick@canonical.com>",
                        "date": "Mon, 15 Jun 2026 16:18:48 -0600"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "xxd",
                "from_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.31",
                    "version": "2:8.2.3995-1ubuntu2.31"
                },
                "to_version": {
                    "source_package_name": "vim",
                    "source_package_version": "2:8.2.3995-1ubuntu2.32",
                    "version": "2:8.2.3995-1ubuntu2.32"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-47162",
                        "url": "https://ubuntu.com/security/CVE-2026-47162",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-47167",
                        "url": "https://ubuntu.com/security/CVE-2026-47167",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52858",
                        "url": "https://ubuntu.com/security/CVE-2026-52858",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52860",
                        "url": "https://ubuntu.com/security/CVE-2026-52860",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-52859",
                        "url": "https://ubuntu.com/security/CVE-2026-52859",
                        "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-11 19:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-47162",
                                "url": "https://ubuntu.com/security/CVE-2026-47162",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0495, a Vimscript code injection vulnerability exists in s:NetrwBookHistSave() in the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) when serializing browsed directory paths to the history file ~/.vim/.netrwhist. A directory name derived from the filesystem is interpolated into a single-quoted Vimscript string literal without escaping embedded single quotes, allowing a crafted directory name to break out of the string context and execute arbitrary Vimscript, including shell commands via system() and :!, the next time the history file is sourced. This issue has been patched in version 9.2.0495.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-47167",
                                "url": "https://ubuntu.com/security/CVE-2026-47167",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0496, a code injection vulnerability exists in s:stepmatch() in the cucumber filetype plugin (runtime/ftplugin/cucumber.vim) on Vim builds with +ruby support. Step-definition patterns read from .rb files under the repository's features/*/ or stories/*/ directories are embedded into a Ruby Kernel.eval argument without sufficient escaping, allowing a crafted pattern in an attacker-controlled repository to execute arbitrary Ruby (and through it arbitrary shell commands) when the user invokes a step-jump mapping ([d, ]d). This issue has been patched in version 9.2.0496.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52858",
                                "url": "https://ubuntu.com/security/CVE-2026-52858",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0561, the Python omni-completion script in python3complete.vim for Vim with the +python3 interpreter enabled (and the legacy pythoncomplete.vim for builds with the +python interpreter) executes the import and from statements found in the current buffer through Python's import machinery. Because the buffer's working directory is on sys.path, opening a hostile .py file with a sibling Python package and invoking omni-completion runs that package's top-level code as the editing user. This issue has been patched in version 9.2.0561.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52860",
                                "url": "https://ubuntu.com/security/CVE-2026-52860",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0597, Vim's Python omni-completion executes reconstructed function and class definitions from the current buffer with exec() as part of populating the completion dictionary. Python evaluates function default values, parameter annotations, and class base expressions at definition time, so a hostile buffer can execute attacker-controlled Python expressions during omni-completion. The existing g:pythoncomplete_allow_import mitigation (GHSA-52mc-rq6p-rc7c) does not cover this path, because the attacker-controlled code is not a harvested import/from statement. This issue has been patched in version 9.2.0597.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-52859",
                                "url": "https://ubuntu.com/security/CVE-2026-52859",
                                "cve_description": "Vim is an open source, command line text editor. Prior to version 9.2.0565, the update_snapshot() function in src/terminal.c copies the visible terminal screen into the scrollback buffer when a snapshot is taken. For each screen cell it walks the cell's chars[] array with no upper bound, stopping only when it encounters a NUL terminator. When a cell legitimately fills all VTERM_MAX_CHARS_PER_CELL (6) slots — a base character plus five combining marks — the bundled libvterm returns the array without a terminating NUL, so the loop reads past the fixed six-element array and appends the out-of-bounds values to a buffer reserved for only six characters. A program whose output is rendered inside a :terminal window can trigger this with a short byte sequence and no Vim scripting, leading to a crash. This issue has been patched in version 9.2.0565.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-11 19:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: Code injection via NetrwBookHistSave().",
                            "    - debian/patches/CVE-2026-47162.patch: Properly quote the directory name",
                            "      in runtime/autoload/netrw.vim.",
                            "    - CVE-2026-47162",
                            "  * SECURITY UPDATE: Code Injection in cucumber filetype plugin.",
                            "    - debian/patches/CVE-2026-47167.patch: Use rubys Regexp.new() in",
                            "      runtime/ftplugin/cucumber.vim.",
                            "    - CVE-2026-47167",
                            "  * SECURITY UPDATE: Code execution with python3complete.",
                            "    - debian/patches/CVE-2026-52858.patch: Disable execution of import/from",
                            "      statements in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - debian/patches/CVE-2026-52860.patch: Strip default expressions and",
                            "      annotations in runtime/autoload/python3complete.vim and",
                            "      ../pythoncomplete.vim",
                            "    - CVE-2026-52858",
                            "    - CVE-2026-52860",
                            "  * SECURITY UPDATE: Out-of-bounds read in update_snapshot().",
                            "    - debian/patches/CVE-2026-52859.patch: Bound loop in handle_pushline() in",
                            "      src/terminal.c.",
                            "    - CVE-2026-52859",
                            ""
                        ],
                        "package": "vim",
                        "version": "2:8.2.3995-1ubuntu2.32",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Kyle Kernick <kyle.kernick@canonical.com>",
                        "date": "Mon, 15 Jun 2026 16:18:48 -0600"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "added": {
        "deb": [
            {
                "name": "linux-headers-5.15.0-185",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-181.191",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-185.195",
                    "version": "5.15.0-185.195"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-45988",
                        "url": "https://ubuntu.com/security/CVE-2026-45988",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Fix re-decryption of RESPONSE packets  If a RESPONSE packet gets a temporary failure during processing, it may end up in a partially decrypted state - and then get requeued for a retry.  Fix this by just discarding the packet; we will send another CHALLENGE packet and thereby elicit a further response.  Similarly, discard an incoming CHALLENGE packet if we get an error whilst generating a RESPONSE; the server will send another CHALLENGE.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-27 14:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46195",
                        "url": "https://ubuntu.com/security/CVE-2026-46195",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: validate dacloffset before building DACL pointers  parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor.  On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths.  Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46135",
                        "url": "https://ubuntu.com/security/CVE-2026-46135",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: fix race between ICReq handling and queue teardown  nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown.  If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock.  If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue.  The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference.  Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started.  Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31402",
                        "url": "https://ubuntu.com/security/CVE-2026-31402",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nfsd: fix heap overflow in NFSv4.0 LOCK replay cache  The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT).  When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory.  This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial.  We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large.  Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43071",
                        "url": "https://ubuntu.com/security/CVE-2026-43071",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dcache: Limit the minimal number of bucket to two  There is an OOB read problem on dentry_hashtable when user sets 'dhash_entries=1':   BUG: unable to handle page fault for address: ffff888b30b774b0   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   Oops: Oops: 0000 [#1] SMP PTI   RIP: 0010:__d_lookup+0x56/0x120    Call Trace:     d_lookup.cold+0x16/0x5d     lookup_dcache+0x27/0xf0     lookup_one_qstr_excl+0x2a/0x180     start_dirop+0x55/0xa0     simple_start_creating+0x8d/0xa0     debugfs_start_creating+0x8c/0x180     debugfs_create_dir+0x1d/0x1c0     pinctrl_init+0x6d/0x140     do_one_initcall+0x6d/0x3d0     kernel_init_freeable+0x39f/0x460     kernel_init+0x2a/0x260  There will be only one bucket in dentry_hashtable when dhash_entries is set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then, following process will access more than one buckets(which memory region is not allocated) in dentry_hashtable:  d_lookup   b = d_hash(hash)     dentry_hashtable + ((u32)hashlen >> d_hash_shift)     // The C standard defines the behavior of right shift amounts     // exceeding the bit width of the operand as undefined. The     // result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',     // so 'b' will point to an unallocated memory region.   hlist_bl_for_each_entry_rcu(b)    hlist_bl_first_rcu(head)     h->first  // read OOB!  Fix it by limiting the minimal number of dentry_hashtable bucket to two, so that 'd_hash_shift' won't exceeds the bit width of type u32.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-05-05 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46119",
                        "url": "https://ubuntu.com/security/CVE-2026-46119",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix slab-out-of-bounds access in auth message processing  If a (potentially corrupted) message of type CEPH_MSG_AUTH_REPLY contains a positive value in its result field, it is treated as an error code by ceph_handle_auth_reply() and returned to handle_auth_reply(). Thereafter, an attempt is made to send the preallocated message of type CEPH_MSG_AUTH, where the returned value is interpreted as the size of the front segment to send. If the result value in the message is greater than the size of the memory buffer allocated for the front segment, an out-of-bounds access occurs, and the content of the memory region beyond this buffer is sent out.  This patch fixes the issue by treating only negative values in the result field as errors. Positive values are therefore treated as success in the same way as a zero value. Additionally, a BUG_ON is added to __send_prepared_auth_request() comparing the len parameter to front_alloc_len to prevent sending the message if it exceeds the bounds of the allocation and to make it easier to catch any logic flaws leading to this.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43501",
                        "url": "https://ubuntu.com/security/CVE-2026-43501",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: rpl: reserve mac_len headroom when recompressed SRH grows  ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps the next segment into ipv6_hdr->daddr, recompresses, then pulls the old header and pushes the new one plus the IPv6 header back.  The recompressed header can be larger than the received one when the swap reduces the common-prefix length the segments share with daddr (CmprI=0, CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).  pskb_expand_head() was gated on segments_left == 0, so on earlier segments the push consumed unchecked headroom.  Once skb_push() leaves fewer than skb->mac_len bytes in front of data, skb_mac_header_rebuild()'s call to:  \tskb_set_mac_header(skb, -skb->mac_len);  will store (data - head) - mac_len into the u16 mac_header field, which wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB past skb->head.  A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.  Fix this by expanding the head whenever the remaining room is less than the push size plus mac_len, and request that much extra so the rebuilt MAC header fits afterwards.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-21 13:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46043",
                        "url": "https://ubuntu.com/security/CVE-2026-46043",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv  rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used.  However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen:    payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)                  - RXE_ICRC_SIZE  This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users.  Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-27 14:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43493",
                        "url": "https://ubuntu.com/security/CVE-2026-43493",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: pcrypt - Fix handling of MAY_BACKLOG requests  MAY_BACKLOG requests can return EBUSY.  Handle them by checking for that value and filtering out EINPROGRESS notifications.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-19 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31637",
                        "url": "https://ubuntu.com/security/CVE-2026-31637",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: reject undecryptable rxkad response tickets  rxkad_decrypt_ticket() decrypts the RXKAD response ticket and then parses the buffer as plaintext without checking whether crypto_skcipher_decrypt() succeeded.  A malformed RESPONSE can therefore use a non-block-aligned ticket length, make the decrypt operation fail, and still drive the ticket parser with attacker-controlled bytes.  Check the decrypt result and abort the connection with RXKADBADTICKET when ticket decryption fails.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31657",
                        "url": "https://ubuntu.com/security/CVE-2026-31657",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: hold claim backbone gateways by reference  batadv_bla_add_claim() can replace claim->backbone_gw and drop the old gateway's last reference while readers still follow the pointer.  The netlink claim dump path dereferences claim->backbone_gw->orig and takes claim->backbone_gw->crc_lock without pinning the underlying backbone gateway. batadv_bla_check_claim() still has the same naked pointer access pattern.  Reuse batadv_bla_claim_get_backbone_gw() in both readers so they operate on a stable gateway reference until the read-side work is complete. This keeps the dump and claim-check paths aligned with the lifetime rules introduced for the other BLA claim readers.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31685",
                        "url": "https://ubuntu.com/security/CVE-2026-31685",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ip6t_eui64: reject invalid MAC header for all packets  `eui64_mt6()` derives a modified EUI-64 from the Ethernet source address and compares it with the low 64 bits of the IPv6 source address.  The existing guard only rejects an invalid MAC header when `par->fragoff != 0`. For packets with `par->fragoff == 0`, `eui64_mt6()` can still reach `eth_hdr(skb)` even when the MAC header is not valid.  Fix this by removing the `par->fragoff != 0` condition so that packets with an invalid MAC header are rejected before accessing `eth_hdr(skb)`.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-25 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43117",
                        "url": "https://ubuntu.com/security/CVE-2026-43117",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: tracepoints: get correct superblock from dentry in event btrfs_sync_file()  If overlay is used on top of btrfs, dentry->d_sb translates to overlay's super block and fsid assignment will lead to a crash.  Use file_inode(file)->i_sb to always get btrfs_sb.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-06 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43114",
                        "url": "https://ubuntu.com/security/CVE-2026-43114",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry  New test case fails unexpectedly when avx2 matching functions are used.  The test first loads a ranomly generated pipapo set with 'ipv4 . port' key, i.e.  nft -f foo.  This works.  Then, it reloads the set after a flush: (echo flush set t s; cat foo) | nft -f -  This is expected to work, because its the same set after all and it was already loaded once.  But with avx2, this fails: nft reports a clashing element.  The reported clash is of following form:      We successfully re-inserted       a . b       c . d  Then we try to insert a . d  avx2 finds the already existing a . d, which (due to 'flush set') is marked as invalid in the new generation.  It skips the element and moves to next.  Due to incorrect masking, the skip-step finds the next matching element *only considering the first field*,  i.e. we return the already reinserted \"a . b\", even though the last field is different and the entry should not have been matched.  No such error is reported for the generic c implementation (no avx2) or when the last field has to use the 'nft_pipapo_avx2_lookup_slow' fallback.  Bisection points to 7711f4bb4b36 (\"netfilter: nft_set_pipapo: fix range overlap detection\") but that fix merely uncovers this bug.  Before this commit, the wrong element is returned, but erronously reported as a full, identical duplicate.  The root-cause is too early return in the avx2 match functions. When we process the last field, we should continue to process data until the entire input size has been consumed to make sure no stale bits remain in the map.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-06 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31478",
                        "url": "https://ubuntu.com/security/CVE-2026-31478",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()  After this commit (e2b76ab8b5c9 \"ksmbd: add support for read compound\"), response buffer management was changed to use dynamic iov array. In the new design, smb2_calc_max_out_buf_len() expects the second argument (hdr2_len) to be the offset of ->Buffer field in the response structure, not a hardcoded magic number. Fix the remaining call sites to use the correct offsetof() value.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-22 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31668",
                        "url": "https://ubuntu.com/security/CVE-2026-31668",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  seg6: separate dst_cache for input and output paths in seg6 lwtunnel  The seg6 lwtunnel uses a single dst_cache per encap route, shared between seg6_input_core() and seg6_output_core(). These two paths can perform the post-encap SID lookup in different routing contexts (e.g., ip rules matching on the ingress interface, or VRF table separation). Whichever path runs first populates the cache, and the other reuses it blindly, bypassing its own lookup.  Fix this by splitting the cache into cache_input and cache_output, so each path maintains its own cached dst independently.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31659",
                        "url": "https://ubuntu.com/security/CVE-2026-31659",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: reject oversized global TT response buffers  batadv_tt_prepare_tvlv_global_data() builds the allocation length for a global TT response in 16-bit temporaries. When a remote originator advertises a large enough global TT, the TT payload length plus the VLAN header offset can exceed 65535 and wrap before kmalloc().  The full-table response path still uses the original TT payload length when it fills tt_change, so the wrapped allocation is too small and batadv_tt_prepare_tvlv_global_data() writes past the end of the heap object before the later packet-size check runs.  Fix this by rejecting TT responses whose TVLV value length cannot fit in the 16-bit TVLV payload length field.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31649",
                        "url": "https://ubuntu.com/security/CVE-2026-31649",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: stmmac: fix integer underflow in chain mode  The jumbo_frm() chain-mode implementation unconditionally computes      len = nopaged_len - bmax;  where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB.  However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb->len (total length including page fragments):      is_jumbo = stmmac_is_jumbo_frm(priv, skb->len, enh_desc);  When a packet has a small linear portion (nopaged_len <= bmax) but a large total length due to page fragments (skb->len > bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx).  This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb->data + bmax * i pointers far beyond the skb buffer to dma_map_single().  On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware.  Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax).  Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31669",
                        "url": "https://ubuntu.com/security/CVE-2026-31669",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mptcp: fix slab-use-after-free in __inet_lookup_established  The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register().  However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently.  This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established.  Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43011",
                        "url": "https://ubuntu.com/security/CVE-2026-43011",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/x25: Fix potential double free of skb  When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain:  x25_queue_rx_frame returns 1     |     v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0     |     v x25_process_rx_frame returns queued=0     |     v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again  This would free the same skb twice. Looking at x25_backlog_rcv:  net/x25/x25_in.c:x25_backlog_rcv() {     ...     queued = x25_process_rx_frame(sk, skb);     ...     if (!queued)         kfree_skb(skb); }",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43037",
                        "url": "https://ubuntu.com/security/CVE-2026-43037",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ip6_tunnel: clear skb2->cb[] in ip4ip6_err()  Oskar Kjos reported the following problem.  ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).  To fix this we clear skb2->cb[], as suggested by Oskar Kjos.  Also add minimal IPv4 header validation (version == 4, ihl >= 5).",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43038",
                        "url": "https://ubuntu.com/security/CVE-2026-43038",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()  Sashiko AI-review observed:    In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet   where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2   and passed to icmp6_send(), it uses IP6CB(skb2).    IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso   offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm   at offset 18.    If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao   would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called   and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO).    This would scan the inner, attacker-controlled IPv6 packet starting at that   offset, potentially returning a fake TLV without checking if the remaining   packet length can hold the full 18-byte struct ipv6_destopt_hao.    Could mip6_addr_swap() then perform a 16-byte swap that extends past the end   of the packet data into skb_shared_info?    Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and   ip6ip6_err() to prevent this?  This patch implements the first suggestion.  I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31682",
                        "url": "https://ubuntu.com/security/CVE-2026-31682",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  bridge: br_nd_send: linearize skb before parsing ND options  br_nd_send() parses neighbour discovery options from ns->opt[] and assumes that these options are in the linear part of request.  Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns->opt[] in that case can access data past the linear buffer.  Linearize request before option parsing and derive ns from the linear network header.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-25 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23450",
                        "url": "https://ubuntu.com/security/CVE-2026-23450",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()  Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1].  smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release().  This leads to two issues:  1) NULL pointer dereference: sk_user_data is NULL when    accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the    smc_sock is freed before its fields (e.g., queued_smc_hs,    ori_af_ops) are accessed.  The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race):    CPU A (softirq)              CPU B (process ctx)    tcp_v4_rcv()     TCP_NEW_SYN_RECV:     sk = req->rsk_listener     sock_hold(sk)     /* No lock on listener */                                smc_close_active():                                  write_lock_bh(cb_lock)                                  sk_user_data = NULL                                  write_unlock_bh(cb_lock)                                  ...                                  smc_clcsock_release()                                  sock_put(smc->sk) x2                                    -> smc_sock freed!     tcp_check_req()       smc_tcp_syn_recv_sock():         smc = user_data(sk)           -> NULL or dangling         smc->queued_smc_hs           -> crash!  Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed.  Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight.  - Set SOCK_RCU_FREE on the SMC listen socket so that   smc_sock freeing is deferred until after the RCU grace   period. This guarantees the memory is still valid when   accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the   smc_sock. If the refcount has already reached zero (close   path completed), it returns false and we bail out safely.  Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected.  Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied.  [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23428",
                        "url": "https://ubuntu.com/security/CVE-2026-23428",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free of share_conf in compound request  smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely.  If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf.  KASAN report:  [    4.144653] ================================================================== [    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [    4.145772] [    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [    4.145875] Workqueue: ksmbd-io handle_ksmbd_work [    4.145888] Call Trace: [    4.145892]  <TASK> [    4.145894]  dump_stack_lvl+0x64/0x80 [    4.145910]  print_report+0xce/0x660 [    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [    4.145928]  ? smb2_write+0xc74/0xe70 [    4.145931]  kasan_report+0xce/0x100 [    4.145934]  ? smb2_write+0xc74/0xe70 [    4.145937]  smb2_write+0xc74/0xe70 [    4.145939]  ? __pfx_smb2_write+0x10/0x10 [    4.145942]  ? _raw_spin_unlock+0xe/0x30 [    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0 [    4.145948]  ? smb2_tree_disconnect+0x31c/0x480 [    4.145951]  handle_ksmbd_work+0x40f/0x1080 [    4.145953]  process_one_work+0x5fa/0xef0 [    4.145962]  ? assign_work+0x122/0x3e0 [    4.145964]  worker_thread+0x54b/0xf70 [    4.145967]  ? __pfx_worker_thread+0x10/0x10 [    4.145970]  kthread+0x346/0x470 [    4.145976]  ? recalc_sigpending+0x19b/0x230 [    4.145980]  ? __pfx_kthread+0x10/0x10 [    4.145984]  ret_from_fork+0x4fb/0x6c0 [    4.145992]  ? __pfx_ret_from_fork+0x10/0x10 [    4.145995]  ? __switch_to+0x36c/0xbe0 [    4.145999]  ? __pfx_kthread+0x10/0x10 [    4.146003]  ret_from_fork_asm+0x1a/0x30 [    4.146013]  </TASK> [    4.146014] [    4.149858] Allocated by task 44: [    4.149953]  kasan_save_stack+0x33/0x60 [    4.150061]  kasan_save_track+0x14/0x30 [    4.150169]  __kasan_kmalloc+0x8f/0xa0 [    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0 [    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600 [    4.150529]  smb2_tree_connect+0x2e6/0x1000 [    4.150645]  handle_ksmbd_work+0x40f/0x1080 [    4.150761]  process_one_work+0x5fa/0xef0 [    4.150873]  worker_thread+0x54b/0xf70 [    4.150978]  kthread+0x346/0x470 [    4.151071]  ret_from_fork+0x4fb/0x6c0 [    4.151176]  ret_from_fork_asm+0x1a/0x30 [    4.151286] [    4.151332] Freed by task 44: [    4.151418]  kasan_save_stack+0x33/0x60 [    4.151526]  kasan_save_track+0x14/0x30 [    4.151634]  kasan_save_free_info+0x3b/0x60 [    4.151751]  __kasan_slab_free+0x43/0x70 [    4.151861]  kfree+0x1ca/0x430 [    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190 [    4.152088]  smb2_tree_disconnect+0x1cd/0x480 [    4.152211]  handle_ksmbd_work+0x40f/0x1080 [    4.152326]  process_one_work+0x5fa/0xef0 [    4.152438]  worker_thread+0x54b/0xf70 [    4.152545]  kthread+0x346/0x470 [    4.152638]  ret_from_fork+0x4fb/0x6c0 [    4.152743]  ret_from_fork_asm+0x1a/0x30 [    4.152853] [    4.152900] The buggy address belongs to the object at ffff88810430c180 [    4.152900]  which belongs to the cache kmalloc-96 of size 96 [    4.153226] The buggy address is located 20 bytes inside of [    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [    4.153549] [    4.153596] The buggy address belongs to the physical page: [    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [    4.154000] flags: 0x ---truncated---",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23455",
                        "url": "https://ubuntu.com/security/CVE-2026-23455",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()  In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read.  Add a check to ensure len is positive after the decrement.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43186",
                        "url": "https://ubuntu.com/security/CVE-2026-43186",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()  On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic.  Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it:    - in ioam6_iptunnel.c (send path, existing validation) to replace     the open-coded computation;   - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose     nodelen is inconsistent with the type field, before any data is     written.  Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-06 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43185",
                        "url": "https://ubuntu.com/security/CVE-2026-43185",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()  smb_direct_prepare_negotiation() casts an unsigned __u32 value from sp->max_recv_size and req->preferred_send_size to a signed int before computing min_t(int, ...). A maliciously provided preferred_send_size of 0x80000000 will return as smaller than max_recv_size, and then be used to set the maximum allowed alowed receive size for the next message.  By sending a second message with a large value (>1420 bytes) the attacker can then achieve a heap buffer overflow.  This fix replaces min_t(int, ...) with min_t(u32)",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-06 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43341",
                        "url": "https://ubuntu.com/security/CVE-2026-43341",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/ipv6: ioam6: prevent schema length wraparound in trace fill  ioam6_fill_trace_data() stores the schema contribution to the trace length in a u8. With bit 22 enabled and the largest schema payload, sclen becomes 1 + 1020 / 4, wraps from 256 to 0, and bypasses the remaining-space check. __ioam6_fill_trace_data() then positions the write cursor without reserving the schema area but still copies the 4-byte schema header and the full schema payload, overrunning the trace buffer.  Keep sclen in an unsigned int so the remaining-space check and the write cursor calculation both see the full schema length.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31607",
                        "url": "https://ubuntu.com/security/CVE-2026-31607",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  usbip: validate number_of_packets in usbip_pack_ret_submit()  When a USB/IP client receives a RET_SUBMIT response, usbip_pack_ret_submit() unconditionally overwrites urb->number_of_packets from the network PDU. This value is subsequently used as the loop bound in usbip_recv_iso() and usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible array whose size was fixed at URB allocation time based on the *original* number_of_packets from the CMD_SUBMIT.  A malicious USB/IP server can set number_of_packets in the response to a value larger than what was originally submitted, causing a heap out-of-bounds write when usbip_recv_iso() writes to urb->iso_frame_desc[i] beyond the allocated region.  KASAN confirmed this with kernel 7.0.0-rc5:    BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640   Write of size 4 at addr ffff888106351d40 by task vhci_rx/69    The buggy address is located 0 bytes to the right of    allocated 320-byte region [ffff888106351c00, ffff888106351d40)  The server side (stub_rx.c) and gadget side (vudc_rx.c) already validate number_of_packets in the CMD_SUBMIT path since commits c6688ef9f297 (\"usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input\") and b78d830f0049 (\"usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input\"). The server side validates against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point. On the client side we have the original URB, so we can use the tighter bound: the response must not exceed the original number_of_packets.  This mirrors the existing validation of actual_length against transfer_buffer_length in usbip_recv_xbuff(), which checks the response value against the original allocation size.  Kelvin Mbogo's series (\"usb: usbip: fix integer overflow in usbip_recv_iso()\", v2) hardens the receive-side functions themselves; this patch complements that work by catching the bad value at its source -- in usbip_pack_ret_submit() before the overwrite -- and using the tighter per-URB allocation bound rather than the global USBIP_MAX_ISO_PACKETS limit.  Fix this by checking rpdu->number_of_packets against urb->number_of_packets in usbip_pack_ret_submit() before the overwrite. On violation, clamp to zero so that usbip_recv_iso() and usbip_pad_iso() safely return early.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43383",
                        "url": "https://ubuntu.com/security/CVE-2026-43383",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tcp-md5: Fix MAC comparison to be constant-time  To prevent timing attacks, MACs need to be compared in constant time.  Use the appropriate helper function for this.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-68263",
                        "url": "https://ubuntu.com/security/CVE-2025-68263",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: ipc: fix use-after-free in ipc_msg_send_request  ipc_msg_send_request() waits for a generic netlink reply using an ipc_msg_table_entry on the stack. The generic netlink handler (handle_generic_event()/handle_response()) fills entry->response under ipc_msg_table_lock, but ipc_msg_send_request() used to validate and free entry->response without holding the same lock.  Under high concurrency this allows a race where handle_response() is copying data into entry->response while ipc_msg_send_request() has just freed it, leading to a slab-use-after-free reported by KASAN in handle_generic_event():    BUG: KASAN: slab-use-after-free in handle_generic_event+0x3c4/0x5f0 [ksmbd]   Write of size 12 at addr ffff888198ee6e20 by task pool/109349   ...   Freed by task:     kvfree     ipc_msg_send_request [ksmbd]     ksmbd_rpc_open -> ksmbd_session_rpc_open [ksmbd]  Fix by: - Taking ipc_msg_table_lock in ipc_msg_send_request() while validating   entry->response, freeing it when invalid, and removing the entry from   ipc_msg_table. - Returning the final entry->response pointer to the caller only after   the hash entry is removed under the lock. - Returning NULL in the error path, preserving the original API   semantics.  This makes all accesses to entry->response consistent with handle_response(), which already updates and fills the response buffer under ipc_msg_table_lock, and closes the race that allowed the UAF.",
                        "cve_priority": "critical",
                        "cve_public_date": "2025-12-16 15:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46243",
                        "url": "https://ubuntu.com/security/CVE-2026-46243",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: reject userspace cifs.spnego descriptions  cifs.spnego key descriptions contain authority-bearing fields such as pid, uid, creduid, and upcall_target that cifs.upcall treats as kernel-originating inputs. However, userspace can also create keys of this type through request_key(2) or add_key(2), allowing those fields to be supplied without CIFS origin.  Only accept cifs.spnego descriptions while CIFS is using its private spnego_cred to request the key.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-01 17:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43414",
                        "url": "https://ubuntu.com/security/CVE-2026-43414",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: qla2xxx: Completely fix fcport double free  In qla24xx_els_dcmd_iocb() sp->free is set to qla2x00_els_dcmd_sp_free(). When an error happens, this function is called by qla2x00_sp_release(), when kref_put() releases the first and the last reference.  qla2x00_els_dcmd_sp_free() frees fcport by calling qla2x00_free_fcport(). Doing it one more time after kref_put() is a bad idea.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43407",
                        "url": "https://ubuntu.com/security/CVE-2026-43407",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()  This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation.  This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length.  Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length.  BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262  CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace:  <TASK>  dump_stack_lvl+0x76/0xa0  print_report+0xd1/0x620  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? kasan_complete_mode_report_info+0x72/0x210  kasan_report+0xe7/0x130  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  __asan_report_load_n_noabort+0xf/0x20  ceph_handle_auth_reply+0x642/0x7a0 [libceph]  mon_dispatch+0x973/0x23d0 [libceph]  ? apparmor_socket_recvmsg+0x6b/0xa0  ? __pfx_mon_dispatch+0x10/0x10 [libceph]  ? __kasan_check_write+0x14/0x30i  ? mutex_unlock+0x7f/0xd0  ? __pfx_mutex_unlock+0x10/0x10  ? __pfx_do_recvmsg+0x10/0x10 [libceph]  ceph_con_process_message+0x1f1/0x650 [libceph]  process_message+0x1e/0x450 [libceph]  ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]  ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph]  ? save_fpregs_to_fpstate+0xb0/0x230  ? raw_spin_rq_unlock+0x17/0xa0  ? finish_task_switch.isra.0+0x13b/0x760  ? __switch_to+0x385/0xda0  ? __kasan_check_write+0x14/0x30  ? mutex_lock+0x8d/0xe0  ? __pfx_mutex_lock+0x10/0x10  ceph_con_workfn+0x248/0x10c0 [libceph]  process_one_work+0x629/0xf80  ? __kasan_check_write+0x14/0x30  worker_thread+0x87f/0x1570  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? __pfx_try_to_wake_up+0x10/0x10  ? kasan_print_address_stack_frame+0x1f7/0x280  ? __pfx_worker_thread+0x10/0x10  kthread+0x396/0x830  ? __pfx__raw_spin_lock_irq+0x10/0x10  ? __pfx_kthread+0x10/0x10  ? __kasan_check_write+0x14/0x30  ? recalc_sigpending+0x180/0x210  ? __pfx_kthread+0x10/0x10  ret_from_fork+0x3f7/0x610  ? __pfx_ret_from_fork+0x10/0x10  ? __switch_to+0x385/0xda0  ? __pfx_kthread+0x10/0x10  ret_from_fork_asm+0x1a/0x30  </TASK>  [ idryomov: replace if statements with ceph_decode_need() for   payload_len and result_msg_len ]",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43406",
                        "url": "https://ubuntu.com/security/CVE-2026-43406",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: prevent potential out-of-bounds reads in process_message_header()  If the message frame is (maliciously) corrupted in a way that the length of the control segment ends up being less than the size of the message header or a different frame is made to look like a message frame, out-of-bounds reads may ensue in process_message_header().  Perform an explicit bounds check before decoding the message header.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43304",
                        "url": "https://ubuntu.com/security/CVE-2026-43304",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: define and enforce CEPH_MAX_KEY_LEN  When decoding the key, verify that the key material would fit into a fixed-size buffer in process_auth_done() and generally has a sane length.  The new CEPH_MAX_KEY_LEN check replaces the existing check for a key with no key material which is a) not universal since CEPH_CRYPTO_NONE has to be excluded and b) doesn't provide much value since a smaller than needed key is just as invalid as no key -- this has to be handled elsewhere anyway.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-08 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37924",
                        "url": "https://ubuntu.com/security/CVE-2025-37924",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free in kerberos authentication  Setting sess->user = NULL was introduced to fix the dangling pointer created by ksmbd_free_user. However, it is possible another thread could be operating on the session and make use of sess->user after it has been passed to ksmbd_free_user but before sess->user is set to NULL.",
                        "cve_priority": "high",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37778",
                        "url": "https://ubuntu.com/security/CVE-2025-37778",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: Fix dangling pointer in krb_authenticate  krb_authenticate frees sess->user and does not set the pointer to NULL. It calls ksmbd_krb5_authenticate to reinitialise sess->user but that function may return without doing so. If that happens then smb2_sess_setup, which calls krb_authenticate, will be accessing free'd memory when it later uses sess->user.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-01 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2022-48816",
                        "url": "https://ubuntu.com/security/CVE-2022-48816",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  SUNRPC: lock against ->sock changing during sysfs read  ->sock can be set to NULL asynchronously unless ->recv_mutex is held. So it is important to hold that mutex.  Otherwise a sysfs read can trigger an oops. Commit 17f09d3f619a (\"SUNRPC: Check if the xprt is connected before handling sysfs reads\") appears to attempt to fix this problem, but it only narrows the race window.",
                        "cve_priority": "medium",
                        "cve_public_date": "2024-07-16 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23182",
                        "url": "https://ubuntu.com/security/CVE-2026-23182",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra: Fix a memory leak in tegra_slink_probe()  In tegra_slink_probe(), when platform_get_irq() fails, it directly returns from the function with an error code, which causes a memory leak.  Replace it with a goto label to ensure proper cleanup.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23202",
                        "url": "https://ubuntu.com/security/CVE-2026-23202",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer  The curr_xfer field is read by the IRQ handler without holding the lock to check if a transfer is in progress. When clearing curr_xfer in the combined sequence transfer loop, protect it with the spinlock to prevent a race with the interrupt handler.  Protect the curr_xfer clearing at the exit path of tegra_qspi_combined_seq_xfer() with the spinlock to prevent a race with the interrupt handler that reads this field.  Without this protection, the IRQ handler could read a partially updated curr_xfer value, leading to NULL pointer dereference or use-after-free.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71089",
                        "url": "https://ubuntu.com/security/CVE-2025-71089",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  iommu: disable SVA when CONFIG_X86 is set  Patch series \"Fix stale IOTLB entries for kernel address space\", v7.  This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA).  In an SVA context, an IOMMU can cache kernel page table entries.  When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries.  This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption.  This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused.   This patch (of 8):  In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables.  The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table.  Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries.  The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings.  This can cause the IOMMU's internal caches to retain stale entries for kernel VA.  Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated.  The IOMMU could misinterpret the new data as valid page table entries.  The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation.  This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables.  Currently, SVA contexts are unprivileged and cannot access kernel mappings.  However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out.  This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern.  Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-01-13 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2023-53673",
                        "url": "https://ubuntu.com/security/CVE-2023-53673",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  Bluetooth: hci_event: call disconnect callback before deleting conn  In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.  ISO, L2CAP and SCO connections refer to the hci_conn without hci_conn_get, so disconn_cfm must be called so they can clean up their conn, otherwise use-after-free occurs.  ISO: ========================================================== iso_sock_connect:880: sk 00000000eabd6557 iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073 hci_dev_put:1487: hci0 orig refcnt 17 __iso_chan_add:214: conn 00000000b6251073 iso_sock_clear_timer:117: sock 00000000eabd6557 state 3 ... hci_rx_work:4085: hci0 Event packet hci_event_packet:7601: hci0: event 0x0f hci_cmd_status_evt:4346: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3107: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560 hci_conn_unlink:1102: hci0: hcon 000000001696f1fd hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2 hci_chan_list_flush:2780: hcon 000000001696f1fd hci_dev_put:1487: hci0 orig refcnt 21 hci_dev_put:1487: hci0 orig refcnt 20 hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c ... <no iso_* activity on sk/conn> ... iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557 BUG: kernel NULL pointer dereference, address: 0000000000000668 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth ==========================================================  L2CAP: ================================================================== hci_cmd_status_evt:4359: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3085: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585 hci_conn_unlink:1102: hci0: hcon ffff88800c999000 hci_chan_list_flush:2780: hcon ffff88800c999000 hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280 ... BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth] Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175  CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace:  <TASK>  dump_stack_lvl+0x5b/0x90  print_report+0xcf/0x670  ? __virt_addr_valid+0xf8/0x180  ? hci_send_acl+0x2d/0x540 [bluetooth]  kasan_report+0xa8/0xe0  ? hci_send_acl+0x2d/0x540 [bluetooth]  hci_send_acl+0x2d/0x540 [bluetooth]  ? __pfx___lock_acquire+0x10/0x10  l2cap_chan_send+0x1fd/0x1300 [bluetooth]  ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]  ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]  ? lock_release+0x1d5/0x3c0  ? mark_held_locks+0x1a/0x90  l2cap_sock_sendmsg+0x100/0x170 [bluetooth]  sock_write_iter+0x275/0x280  ? __pfx_sock_write_iter+0x10/0x10  ? __pfx___lock_acquire+0x10/0x10  do_iter_readv_writev+0x176/0x220  ? __pfx_do_iter_readv_writev+0x10/0x10  ? find_held_lock+0x83/0xa0  ? selinux_file_permission+0x13e/0x210  do_iter_write+0xda/0x340  vfs_writev+0x1b4/0x400  ? __pfx_vfs_writev+0x10/0x10  ? __seccomp_filter+0x112/0x750  ? populate_seccomp_data+0x182/0x220  ? __fget_light+0xdf/0x100  ? do_writev+0x19d/0x210  do_writev+0x19d/0x210  ? __pfx_do_writev+0x10/0x10  ? mark_held_locks+0x1a/0x90  do_syscall_64+0x60/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  ? do_syscall_64+0x6c/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7ff45cb23e64 Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: ---truncated---",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-07 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23262",
                        "url": "https://ubuntu.com/security/CVE-2026-23262",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  gve: Fix stats report corruption on queue count change  The driver and the NIC share a region in memory for stats reporting. The NIC calculates its offset into this region based on the total size of the stats region and the size of the NIC's stats.  When the number of queues is changed, the driver's stats region is resized. If the queue count is increased, the NIC can write past the end of the allocated stats region, causing memory corruption. If the queue count is decreased, there is a gap between the driver and NIC stats, leading to incorrect stats reporting.  This change fixes the issue by allocating stats region with maximum size, and the offset calculation for NIC stats is changed to match with the calculation of the NIC.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40082",
                        "url": "https://ubuntu.com/security/CVE-2025-40082",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()  BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186 Read of size 2 at addr ffff8880289ef218 by task syz.6.248/14290  CPU: 0 UID: 0 PID: 14290 Comm: syz.6.248 Not tainted 6.16.4 #1 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:  <TASK>  __dump_stack lib/dump_stack.c:94 [inline]  dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120  print_address_description mm/kasan/report.c:378 [inline]  print_report+0xca/0x5f0 mm/kasan/report.c:482  kasan_report+0xca/0x100 mm/kasan/report.c:595  hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186  hfsplus_listxattr+0x5b6/0xbd0 fs/hfsplus/xattr.c:738  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe0e9fae16d Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fe0eae67f98 EFLAGS: 00000246 ORIG_RAX: 00000000000000c3 RAX: ffffffffffffffda RBX: 00007fe0ea205fa0 RCX: 00007fe0e9fae16d RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000200000000000 RBP: 00007fe0ea0480f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fe0ea206038 R14: 00007fe0ea205fa0 R15: 00007fe0eae48000  </TASK>  Allocated by task 14290:  kasan_save_stack+0x24/0x50 mm/kasan/common.c:47  kasan_save_track+0x14/0x30 mm/kasan/common.c:68  poison_kmalloc_redzone mm/kasan/common.c:377 [inline]  __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394  kasan_kmalloc include/linux/kasan.h:260 [inline]  __do_kmalloc_node mm/slub.c:4333 [inline]  __kmalloc_noprof+0x219/0x540 mm/slub.c:4345  kmalloc_noprof include/linux/slab.h:909 [inline]  hfsplus_find_init+0x95/0x1f0 fs/hfsplus/bfind.c:21  hfsplus_listxattr+0x331/0xbd0 fs/hfsplus/xattr.c:697  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  When hfsplus_uni2asc is called from hfsplus_listxattr, it actually passes in a struct hfsplus_attr_unistr*. The size of the corresponding structure is different from that of hfsplus_unistr, so the previous fix (94458781aee6) is insufficient. The pointer on the unicode buffer is still going beyond the allocated memory.  This patch introduces two warpper functions hfsplus_uni2asc_xattr_str and hfsplus_uni2asc_str to process two unicode buffers, struct hfsplus_attr_unistr* and struct hfsplus_unistr* respectively. When ustrlen value is bigger than the allocated memory size, the ustrlen value is limited to an safe size.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-28 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37822",
                        "url": "https://ubuntu.com/security/CVE-2025-37822",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: uprobes: Add missing fence.i after building the XOL buffer  The XOL (execute out-of-line) buffer is used to single-step the replaced instruction(s) for uprobes. The RISC-V port was missing a proper fence.i (i$ flushing) after constructing the XOL buffer, which can result in incorrect execution of stale/broken instructions.  This was found running the BPF selftests \"test_progs: uprobe_autoattach, attach_probe\" on the Spacemit K1/X60, where the uprobes tests randomly blew up.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-08 07:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23190",
                        "url": "https://ubuntu.com/security/CVE-2026-23190",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ASoC: amd: fix memory leak in acp3x pdm dma ops",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23112",
                        "url": "https://ubuntu.com/security/CVE-2026-23112",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec  nvmet_tcp_build_pdu_iovec() could walk past cmd->req.sg when a PDU length or offset exceeds sg_cnt and then use bogus sg->length/offset values, leading to _copy_to_iter() GPF/KASAN. Guard sg_idx, remaining entries, and sg->length/offset before building the bvec.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23111",
                        "url": "https://ubuntu.com/security/CVE-2026-23111",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23180",
                        "url": "https://ubuntu.com/security/CVE-2026-23180",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: add bounds check for if_id in IRQ handler  The IRQ handler extracts if_id from the upper 16 bits of the hardware status register and uses it to index into ethsw->ports[] without validation. Since if_id can be any 16-bit value (0-65535) but the ports array is only allocated with sw_attr.num_ifs elements, this can lead to an out-of-bounds read potentially.  Add a bounds check before accessing the array, consistent with the existing validation in dpaa2_switch_rx().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23256",
                        "url": "https://ubuntu.com/security/CVE-2026-23256",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Compile tested only. Issue found using code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23257",
                        "url": "https://ubuntu.com/security/CVE-2026-23257",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Also, decrement i in the devlink_alloc failure path to point to the last successfully allocated index.  Compile tested only. Issue found using code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23258",
                        "url": "https://ubuntu.com/security/CVE-2026-23258",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Initialize netdev pointer before queue setup  In setup_nic_devices(), the netdev is allocated using alloc_etherdev_mq(). However, the pointer to this structure is stored in oct->props[i].netdev only after the calls to netif_set_real_num_rx_queues() and netif_set_real_num_tx_queues().  If either of these functions fails, setup_nic_devices() returns an error without freeing the allocated netdev. Since oct->props[i].netdev is still NULL at this point, the cleanup function liquidio_destroy_nic_device() will fail to find and free the netdev, resulting in a memory leak.  Fix this by initializing oct->props[i].netdev before calling the queue setup functions. This ensures that the netdev is properly accessible for cleanup in case of errors.  Compile tested only. Issue found using a prototype static analysis tool and code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23206",
                        "url": "https://ubuntu.com/security/CVE-2026-23206",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero  The driver allocates arrays for ports, FDBs, and filter blocks using kcalloc() with ethsw->sw_attr.num_ifs as the element count. When the device reports zero interfaces (either due to hardware configuration or firmware issues), kcalloc(0, ...) returns ZERO_SIZE_PTR (0x10) instead of NULL.  Later in dpaa2_switch_probe(), the NAPI initialization unconditionally accesses ethsw->ports[0]->netdev, which attempts to dereference ZERO_SIZE_PTR (address 0x10), resulting in a kernel panic.  Add a check to ensure num_ifs is greater than zero after retrieving device attributes. This prevents the zero-sized allocations and subsequent invalid pointer dereference.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23176",
                        "url": "https://ubuntu.com/security/CVE-2026-23176",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  platform/x86: toshiba_haps: Fix memory leaks in add/remove routines  toshiba_haps_add() leaks the haps object allocated by it if it returns an error after allocating that object successfully.  toshiba_haps_remove() does not free the object pointed to by toshiba_haps before clearing that pointer, so it becomes unreachable allocated memory.  Address these memory leaks by using devm_kzalloc() for allocating the memory in question.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23216",
                        "url": "https://ubuntu.com/security/CVE-2026-23216",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()  In iscsit_dec_conn_usage_count(), the function calls complete() while holding the conn->conn_usage_lock. As soon as complete() is invoked, the waiter (such as iscsit_close_connection()) may wake up and proceed to free the iscsit_conn structure.  If the waiter frees the memory before the current thread reaches spin_unlock_bh(), it results in a KASAN slab-use-after-free as the function attempts to release a lock within the already-freed connection structure.  Fix this by releasing the spinlock before calling complete().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-18 15:18:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23193",
                        "url": "https://ubuntu.com/security/CVE-2026-23193",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()  In iscsit_dec_session_usage_count(), the function calls complete() while holding the sess->session_usage_lock. Similar to the connection usage count logic, the waiter signaled by complete() (e.g., in the session release path) may wake up and free the iscsit_session structure immediately.  This creates a race condition where the current thread may attempt to execute spin_unlock_bh() on a session structure that has already been deallocated, resulting in a KASAN slab-use-after-free.  To resolve this, release the session_usage_lock before calling complete() to ensure all dereferences of the sess pointer are finished before the waiter is allowed to proceed with deallocation.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71220",
                        "url": "https://ubuntu.com/security/CVE-2025-71220",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe()  When ksmbd_iov_pin_rsp() fails, we should call ksmbd_session_rpc_close().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71222",
                        "url": "https://ubuntu.com/security/CVE-2025-71222",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: wlcore: ensure skb headroom before skb_push  This avoids occasional skb_under_panic Oops from wl1271_tx_work. In this case, headroom is less than needed (typically 110 - 94 = 16 bytes).",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71224",
                        "url": "https://ubuntu.com/security/CVE-2025-71224",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined  ieee80211_ocb_rx_no_sta() assumes a valid channel context, which is only present after JOIN_OCB.  RX may run before JOIN_OCB is executed, in which case the OCB interface is not operational. Skip RX peer handling when the interface is not joined to avoid warnings in the RX path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-68214",
                        "url": "https://ubuntu.com/security/CVE-2025-68214",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  timers: Fix NULL function pointer race in timer_shutdown_sync()  There is a race condition between timer_shutdown_sync() and timer expiration that can lead to hitting a WARN_ON in expire_timers().  The issue occurs when timer_shutdown_sync() clears the timer function to NULL while the timer is still running on another CPU. The race scenario looks like this:  CPU0\t\t\t\t\tCPU1 \t\t\t\t\t<SOFTIRQ> \t\t\t\t\tlock_timer_base() \t\t\t\t\texpire_timers() \t\t\t\t\tbase->running_timer = timer; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t[call_timer_fn enter] \t\t\t\t\tmod_timer() \t\t\t\t\t... timer_shutdown_sync() lock_timer_base() // For now, will not detach the timer but only clear its function to NULL if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base() \t\t\t\t\t[call_timer_fn exit] \t\t\t\t\tlock_timer_base() \t\t\t\t\tbase->running_timer = NULL; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t... \t\t\t\t\t// Now timer is pending while its function set to NULL. \t\t\t\t\t// next timer trigger \t\t\t\t\t<SOFTIRQ> \t\t\t\t\texpire_timers() \t\t\t\t\tWARN_ON_ONCE(!fn) // hit \t\t\t\t\t... lock_timer_base() // Now timer will detach if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base()  The problem is that timer_shutdown_sync() clears the timer function regardless of whether the timer is currently running. This can leave a pending timer with a NULL function pointer, which triggers the WARN_ON_ONCE(!fn) check in expire_timers().  Fix this by only clearing the timer function when actually detaching the timer. If the timer is running, leave the function pointer intact, which is safe because the timer will be properly detached when it finishes running.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-16 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38201",
                        "url": "https://ubuntu.com/security/CVE-2025-38201",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX  Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset.  Similar to:    b541ba7d1f5a (\"netfilter: conntrack: clamp maximum hashtable size to INT_MAX\")",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-07-04 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23198",
                        "url": "https://ubuntu.com/security/CVE-2026-23198",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: Don't clobber irqfd routing type when deassigning irqfd  When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI.  Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information.  As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone.  As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace).  As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list).  And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information.  As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd.  Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity():    BUG: kernel NULL pointer dereference, address: 0000000000000018   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0   Oops: Oops: 0000 [#1] SMP   CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--5dddc257e6b2-irqfd #31 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:amd_iommu_update_ga+0x19/0xe0   Call Trace:    <TASK>    avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd]    __avic_vcpu_load+0xf4/0x130 [kvm_amd]    kvm_arch_vcpu_load+0x89/0x210 [kvm]    vcpu_load+0x30/0x40 [kvm]    kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm]    kvm_vcpu_ioctl+0x571/0x6a0 [kvm]    __se_sys_ioctl+0x6d/0xb0    do_syscall_64+0x6f/0x9d0    entry_SYSCALL_64_after_hwframe+0x4b/0x53   RIP: 0033:0x46893b     </TASK>   ---[ end trace 0000000000000000 ]---  If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment.    list_add corruption. next->prev should be prev (ffff8d474d5cd588),                        but was 0000000000000000. (next=ffff8d8658f86530).   ------------[ cut here ]------------   kernel BUG at lib/list_debug.c:31!   Oops: invalid opcode: 0000 [#1] SMP   CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--f19dc4d680ba-irqfd #28 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:__list_add_valid_or_report+0x97/0xc0   Call Trace:    <TASK>    avic_pi_update_irte+0x28e/0x2b0 [kvm_amd]    kvm_pi_update_irte+0xbf/0x190 [kvm]    kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm]    irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23272",
                        "url": "https://ubuntu.com/security/CVE-2026-23272",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: unconditionally bump set->nelems before insertion  In case that the set is full, a new element gets published then removed without waiting for the RCU grace period, while RCU reader can be walking over it already.  To address this issue, add the element transaction even if set is full, but toggle the set_full flag to report -ENFILE so the abort path safely unwinds the set to its previous state.  As for element updates, decrement set->nelems to restore it.  A simpler fix is to call synchronize_rcu() in the error path. However, with a large batch adding elements to already maxed-out set, this could cause noticeable slowdown of such batches.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-20 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31418",
                        "url": "https://ubuntu.com/security/CVE-2026-31418",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ipset: drop logically empty buckets in mtype_del  mtype_del() counts empty slots below n->pos in k, but it only drops the bucket when both n->pos and k are zero. This misses buckets whose live entries have all been removed while n->pos still points past deleted slots.  Treat a bucket as empty when all positions below n->pos are unused and release it directly instead of shrinking it further.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23278",
                        "url": "https://ubuntu.com/security/CVE-2026-23278",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: always walk all pending catchall elements  During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch.  If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate.  Otherwise, we get:  WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404  RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables]  [..]  __nft_set_elem_destroy+0x106/0x380 [nf_tables]  nf_tables_abort_release+0x348/0x8d0 [nf_tables]  nf_tables_abort+0xcf2/0x3ac0 [nf_tables]  nfnetlink_rcv_batch+0x9c9/0x20e0 [..]",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-20 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46300",
                        "url": "https://ubuntu.com/security/CVE-2026-46300",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: skbuff: preserve shared-frag marker during coalescing  skb_try_coalesce() can attach paged frags from @from to @to.  If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.  That breaks the invariant relied on by later in-place writers.  In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data().  If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags.  Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags.  The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-23 12:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46333",
                        "url": "https://ubuntu.com/security/CVE-2026-46333",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ptrace: slightly saner 'get_dumpable()' logic  The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm.  And almost all users do in fact use it only for the case where the task has a mm pointer.  But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for threads that no longer have a VM (and maybe never did, like most kernel threads).  It's not what this flag was designed for, but it is what it is.  The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional \"drop capabilities\" model doesn't make any difference for this all.  Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached \"last dumpability\" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-15 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43500",
                        "url": "https://ubuntu.com/security/CVE-2026-43500",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present  The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true.  An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec().  Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true.  This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO).  The OOM/trace handling already in place is reused.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-11 08:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43284",
                        "url": "https://ubuntu.com/security/CVE-2026-43284",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  xfrm: esp: avoid in-place decrypt on shared skb frags  MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs.  That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb.  Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path.  This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb->data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 08:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31419",
                        "url": "https://ubuntu.com/security/CVE-2026-31419",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: bonding: fix use-after-free in bond_xmit_broadcast()  bond_xmit_broadcast() reuses the original skb for the last slave (determined by bond_is_last_slave()) and clones it for others. Concurrent slave enslave/release can mutate the slave list during RCU-protected iteration, changing which slave is \"last\" mid-loop. This causes the original skb to be double-consumed (double-freed).  Replace the racy bond_is_last_slave() check with a simple index comparison (i + 1 == slaves_count) against the pre-snapshot slave count taken via READ_ONCE() before the loop.  This preserves the zero-copy optimization for the last slave while making the \"last\" determination stable against concurrent list mutations.  The UAF can trigger the following crash:  ================================================================== BUG: KASAN: slab-use-after-free in skb_clone Read of size 8 at addr ffff888100ef8d40 by task exploit/147  CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY Call Trace:  <TASK>  dump_stack_lvl (lib/dump_stack.c:123)  print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)  kasan_report (mm/kasan/report.c:597)  skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)  bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)  bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)  dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)  __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)  ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)  ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)  ip6_output (net/ipv6/ip6_output.c:250)  ip6_send_skb (net/ipv6/ip6_output.c:1985)  udp_v6_send_skb (net/ipv6/udp.c:1442)  udpv6_sendmsg (net/ipv6/udp.c:1733)  __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)  __x64_sys_sendto (net/socket.c:2209)  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)  </TASK>  Allocated by task 147:  Freed by task 147:  The buggy address belongs to the object at ffff888100ef8c80  which belongs to the cache skbuff_head_cache of size 224 The buggy address is located 192 bytes inside of  freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)  Memory state around the buggy address:  ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc  ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc                                                     ^  ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb  ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31431",
                        "url": "https://ubuntu.com/security/CVE-2026-31431",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: algif_aead - Revert to operating out-of-place  This mostly reverts commit 72548b093ee3 except for the copying of the associated data.  There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings.  Get rid of all the complexity added for in-place operation and just copy the AD directly.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-22 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31533",
                        "url": "https://ubuntu.com/security/CVE-2026-31533",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption  The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 (\"net: tls: handle backlogging of crypto requests\"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry.  When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist.  The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record.  Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-23 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31504",
                        "url": "https://ubuntu.com/security/CVE-2026-31504",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: fix fanout UAF in packet_release() via NETDEV_UP race  `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.  The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.  This bug was found following an additional audit with Claude Code based on CVE-2025-38617.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-22 14:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2157253,
                    1786013,
                    2154219,
                    2153556,
                    2150730,
                    2149767,
                    2149767,
                    2149872,
                    2141536,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2153962
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-45988",
                                "url": "https://ubuntu.com/security/CVE-2026-45988",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Fix re-decryption of RESPONSE packets  If a RESPONSE packet gets a temporary failure during processing, it may end up in a partially decrypted state - and then get requeued for a retry.  Fix this by just discarding the packet; we will send another CHALLENGE packet and thereby elicit a further response.  Similarly, discard an incoming CHALLENGE packet if we get an error whilst generating a RESPONSE; the server will send another CHALLENGE.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-27 14:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46195",
                                "url": "https://ubuntu.com/security/CVE-2026-46195",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: validate dacloffset before building DACL pointers  parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor.  On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths.  Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46135",
                                "url": "https://ubuntu.com/security/CVE-2026-46135",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: fix race between ICReq handling and queue teardown  nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown.  If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock.  If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue.  The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference.  Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started.  Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31402",
                                "url": "https://ubuntu.com/security/CVE-2026-31402",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nfsd: fix heap overflow in NFSv4.0 LOCK replay cache  The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT).  When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory.  This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial.  We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large.  Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43071",
                                "url": "https://ubuntu.com/security/CVE-2026-43071",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dcache: Limit the minimal number of bucket to two  There is an OOB read problem on dentry_hashtable when user sets 'dhash_entries=1':   BUG: unable to handle page fault for address: ffff888b30b774b0   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   Oops: Oops: 0000 [#1] SMP PTI   RIP: 0010:__d_lookup+0x56/0x120    Call Trace:     d_lookup.cold+0x16/0x5d     lookup_dcache+0x27/0xf0     lookup_one_qstr_excl+0x2a/0x180     start_dirop+0x55/0xa0     simple_start_creating+0x8d/0xa0     debugfs_start_creating+0x8c/0x180     debugfs_create_dir+0x1d/0x1c0     pinctrl_init+0x6d/0x140     do_one_initcall+0x6d/0x3d0     kernel_init_freeable+0x39f/0x460     kernel_init+0x2a/0x260  There will be only one bucket in dentry_hashtable when dhash_entries is set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then, following process will access more than one buckets(which memory region is not allocated) in dentry_hashtable:  d_lookup   b = d_hash(hash)     dentry_hashtable + ((u32)hashlen >> d_hash_shift)     // The C standard defines the behavior of right shift amounts     // exceeding the bit width of the operand as undefined. The     // result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',     // so 'b' will point to an unallocated memory region.   hlist_bl_for_each_entry_rcu(b)    hlist_bl_first_rcu(head)     h->first  // read OOB!  Fix it by limiting the minimal number of dentry_hashtable bucket to two, so that 'd_hash_shift' won't exceeds the bit width of type u32.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-05-05 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46119",
                                "url": "https://ubuntu.com/security/CVE-2026-46119",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix slab-out-of-bounds access in auth message processing  If a (potentially corrupted) message of type CEPH_MSG_AUTH_REPLY contains a positive value in its result field, it is treated as an error code by ceph_handle_auth_reply() and returned to handle_auth_reply(). Thereafter, an attempt is made to send the preallocated message of type CEPH_MSG_AUTH, where the returned value is interpreted as the size of the front segment to send. If the result value in the message is greater than the size of the memory buffer allocated for the front segment, an out-of-bounds access occurs, and the content of the memory region beyond this buffer is sent out.  This patch fixes the issue by treating only negative values in the result field as errors. Positive values are therefore treated as success in the same way as a zero value. Additionally, a BUG_ON is added to __send_prepared_auth_request() comparing the len parameter to front_alloc_len to prevent sending the message if it exceeds the bounds of the allocation and to make it easier to catch any logic flaws leading to this.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43501",
                                "url": "https://ubuntu.com/security/CVE-2026-43501",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: rpl: reserve mac_len headroom when recompressed SRH grows  ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps the next segment into ipv6_hdr->daddr, recompresses, then pulls the old header and pushes the new one plus the IPv6 header back.  The recompressed header can be larger than the received one when the swap reduces the common-prefix length the segments share with daddr (CmprI=0, CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).  pskb_expand_head() was gated on segments_left == 0, so on earlier segments the push consumed unchecked headroom.  Once skb_push() leaves fewer than skb->mac_len bytes in front of data, skb_mac_header_rebuild()'s call to:  \tskb_set_mac_header(skb, -skb->mac_len);  will store (data - head) - mac_len into the u16 mac_header field, which wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB past skb->head.  A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.  Fix this by expanding the head whenever the remaining room is less than the push size plus mac_len, and request that much extra so the rebuilt MAC header fits afterwards.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-21 13:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46043",
                                "url": "https://ubuntu.com/security/CVE-2026-46043",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv  rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used.  However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen:    payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)                  - RXE_ICRC_SIZE  This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users.  Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-27 14:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43493",
                                "url": "https://ubuntu.com/security/CVE-2026-43493",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: pcrypt - Fix handling of MAY_BACKLOG requests  MAY_BACKLOG requests can return EBUSY.  Handle them by checking for that value and filtering out EINPROGRESS notifications.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-19 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31637",
                                "url": "https://ubuntu.com/security/CVE-2026-31637",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: reject undecryptable rxkad response tickets  rxkad_decrypt_ticket() decrypts the RXKAD response ticket and then parses the buffer as plaintext without checking whether crypto_skcipher_decrypt() succeeded.  A malformed RESPONSE can therefore use a non-block-aligned ticket length, make the decrypt operation fail, and still drive the ticket parser with attacker-controlled bytes.  Check the decrypt result and abort the connection with RXKADBADTICKET when ticket decryption fails.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31657",
                                "url": "https://ubuntu.com/security/CVE-2026-31657",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: hold claim backbone gateways by reference  batadv_bla_add_claim() can replace claim->backbone_gw and drop the old gateway's last reference while readers still follow the pointer.  The netlink claim dump path dereferences claim->backbone_gw->orig and takes claim->backbone_gw->crc_lock without pinning the underlying backbone gateway. batadv_bla_check_claim() still has the same naked pointer access pattern.  Reuse batadv_bla_claim_get_backbone_gw() in both readers so they operate on a stable gateway reference until the read-side work is complete. This keeps the dump and claim-check paths aligned with the lifetime rules introduced for the other BLA claim readers.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31685",
                                "url": "https://ubuntu.com/security/CVE-2026-31685",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ip6t_eui64: reject invalid MAC header for all packets  `eui64_mt6()` derives a modified EUI-64 from the Ethernet source address and compares it with the low 64 bits of the IPv6 source address.  The existing guard only rejects an invalid MAC header when `par->fragoff != 0`. For packets with `par->fragoff == 0`, `eui64_mt6()` can still reach `eth_hdr(skb)` even when the MAC header is not valid.  Fix this by removing the `par->fragoff != 0` condition so that packets with an invalid MAC header are rejected before accessing `eth_hdr(skb)`.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-25 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43117",
                                "url": "https://ubuntu.com/security/CVE-2026-43117",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: tracepoints: get correct superblock from dentry in event btrfs_sync_file()  If overlay is used on top of btrfs, dentry->d_sb translates to overlay's super block and fsid assignment will lead to a crash.  Use file_inode(file)->i_sb to always get btrfs_sb.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-06 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43114",
                                "url": "https://ubuntu.com/security/CVE-2026-43114",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry  New test case fails unexpectedly when avx2 matching functions are used.  The test first loads a ranomly generated pipapo set with 'ipv4 . port' key, i.e.  nft -f foo.  This works.  Then, it reloads the set after a flush: (echo flush set t s; cat foo) | nft -f -  This is expected to work, because its the same set after all and it was already loaded once.  But with avx2, this fails: nft reports a clashing element.  The reported clash is of following form:      We successfully re-inserted       a . b       c . d  Then we try to insert a . d  avx2 finds the already existing a . d, which (due to 'flush set') is marked as invalid in the new generation.  It skips the element and moves to next.  Due to incorrect masking, the skip-step finds the next matching element *only considering the first field*,  i.e. we return the already reinserted \"a . b\", even though the last field is different and the entry should not have been matched.  No such error is reported for the generic c implementation (no avx2) or when the last field has to use the 'nft_pipapo_avx2_lookup_slow' fallback.  Bisection points to 7711f4bb4b36 (\"netfilter: nft_set_pipapo: fix range overlap detection\") but that fix merely uncovers this bug.  Before this commit, the wrong element is returned, but erronously reported as a full, identical duplicate.  The root-cause is too early return in the avx2 match functions. When we process the last field, we should continue to process data until the entire input size has been consumed to make sure no stale bits remain in the map.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-06 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31478",
                                "url": "https://ubuntu.com/security/CVE-2026-31478",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()  After this commit (e2b76ab8b5c9 \"ksmbd: add support for read compound\"), response buffer management was changed to use dynamic iov array. In the new design, smb2_calc_max_out_buf_len() expects the second argument (hdr2_len) to be the offset of ->Buffer field in the response structure, not a hardcoded magic number. Fix the remaining call sites to use the correct offsetof() value.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-22 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31668",
                                "url": "https://ubuntu.com/security/CVE-2026-31668",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  seg6: separate dst_cache for input and output paths in seg6 lwtunnel  The seg6 lwtunnel uses a single dst_cache per encap route, shared between seg6_input_core() and seg6_output_core(). These two paths can perform the post-encap SID lookup in different routing contexts (e.g., ip rules matching on the ingress interface, or VRF table separation). Whichever path runs first populates the cache, and the other reuses it blindly, bypassing its own lookup.  Fix this by splitting the cache into cache_input and cache_output, so each path maintains its own cached dst independently.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31659",
                                "url": "https://ubuntu.com/security/CVE-2026-31659",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: reject oversized global TT response buffers  batadv_tt_prepare_tvlv_global_data() builds the allocation length for a global TT response in 16-bit temporaries. When a remote originator advertises a large enough global TT, the TT payload length plus the VLAN header offset can exceed 65535 and wrap before kmalloc().  The full-table response path still uses the original TT payload length when it fills tt_change, so the wrapped allocation is too small and batadv_tt_prepare_tvlv_global_data() writes past the end of the heap object before the later packet-size check runs.  Fix this by rejecting TT responses whose TVLV value length cannot fit in the 16-bit TVLV payload length field.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31649",
                                "url": "https://ubuntu.com/security/CVE-2026-31649",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: stmmac: fix integer underflow in chain mode  The jumbo_frm() chain-mode implementation unconditionally computes      len = nopaged_len - bmax;  where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB.  However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb->len (total length including page fragments):      is_jumbo = stmmac_is_jumbo_frm(priv, skb->len, enh_desc);  When a packet has a small linear portion (nopaged_len <= bmax) but a large total length due to page fragments (skb->len > bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx).  This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb->data + bmax * i pointers far beyond the skb buffer to dma_map_single().  On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware.  Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax).  Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31669",
                                "url": "https://ubuntu.com/security/CVE-2026-31669",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mptcp: fix slab-use-after-free in __inet_lookup_established  The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register().  However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently.  This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established.  Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43011",
                                "url": "https://ubuntu.com/security/CVE-2026-43011",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/x25: Fix potential double free of skb  When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain:  x25_queue_rx_frame returns 1     |     v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0     |     v x25_process_rx_frame returns queued=0     |     v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again  This would free the same skb twice. Looking at x25_backlog_rcv:  net/x25/x25_in.c:x25_backlog_rcv() {     ...     queued = x25_process_rx_frame(sk, skb);     ...     if (!queued)         kfree_skb(skb); }",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43037",
                                "url": "https://ubuntu.com/security/CVE-2026-43037",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ip6_tunnel: clear skb2->cb[] in ip4ip6_err()  Oskar Kjos reported the following problem.  ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).  To fix this we clear skb2->cb[], as suggested by Oskar Kjos.  Also add minimal IPv4 header validation (version == 4, ihl >= 5).",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43038",
                                "url": "https://ubuntu.com/security/CVE-2026-43038",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()  Sashiko AI-review observed:    In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet   where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2   and passed to icmp6_send(), it uses IP6CB(skb2).    IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso   offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm   at offset 18.    If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao   would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called   and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO).    This would scan the inner, attacker-controlled IPv6 packet starting at that   offset, potentially returning a fake TLV without checking if the remaining   packet length can hold the full 18-byte struct ipv6_destopt_hao.    Could mip6_addr_swap() then perform a 16-byte swap that extends past the end   of the packet data into skb_shared_info?    Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and   ip6ip6_err() to prevent this?  This patch implements the first suggestion.  I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31682",
                                "url": "https://ubuntu.com/security/CVE-2026-31682",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  bridge: br_nd_send: linearize skb before parsing ND options  br_nd_send() parses neighbour discovery options from ns->opt[] and assumes that these options are in the linear part of request.  Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns->opt[] in that case can access data past the linear buffer.  Linearize request before option parsing and derive ns from the linear network header.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-25 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23450",
                                "url": "https://ubuntu.com/security/CVE-2026-23450",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()  Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1].  smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release().  This leads to two issues:  1) NULL pointer dereference: sk_user_data is NULL when    accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the    smc_sock is freed before its fields (e.g., queued_smc_hs,    ori_af_ops) are accessed.  The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race):    CPU A (softirq)              CPU B (process ctx)    tcp_v4_rcv()     TCP_NEW_SYN_RECV:     sk = req->rsk_listener     sock_hold(sk)     /* No lock on listener */                                smc_close_active():                                  write_lock_bh(cb_lock)                                  sk_user_data = NULL                                  write_unlock_bh(cb_lock)                                  ...                                  smc_clcsock_release()                                  sock_put(smc->sk) x2                                    -> smc_sock freed!     tcp_check_req()       smc_tcp_syn_recv_sock():         smc = user_data(sk)           -> NULL or dangling         smc->queued_smc_hs           -> crash!  Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed.  Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight.  - Set SOCK_RCU_FREE on the SMC listen socket so that   smc_sock freeing is deferred until after the RCU grace   period. This guarantees the memory is still valid when   accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the   smc_sock. If the refcount has already reached zero (close   path completed), it returns false and we bail out safely.  Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected.  Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied.  [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23428",
                                "url": "https://ubuntu.com/security/CVE-2026-23428",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free of share_conf in compound request  smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely.  If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf.  KASAN report:  [    4.144653] ================================================================== [    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [    4.145772] [    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [    4.145875] Workqueue: ksmbd-io handle_ksmbd_work [    4.145888] Call Trace: [    4.145892]  <TASK> [    4.145894]  dump_stack_lvl+0x64/0x80 [    4.145910]  print_report+0xce/0x660 [    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [    4.145928]  ? smb2_write+0xc74/0xe70 [    4.145931]  kasan_report+0xce/0x100 [    4.145934]  ? smb2_write+0xc74/0xe70 [    4.145937]  smb2_write+0xc74/0xe70 [    4.145939]  ? __pfx_smb2_write+0x10/0x10 [    4.145942]  ? _raw_spin_unlock+0xe/0x30 [    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0 [    4.145948]  ? smb2_tree_disconnect+0x31c/0x480 [    4.145951]  handle_ksmbd_work+0x40f/0x1080 [    4.145953]  process_one_work+0x5fa/0xef0 [    4.145962]  ? assign_work+0x122/0x3e0 [    4.145964]  worker_thread+0x54b/0xf70 [    4.145967]  ? __pfx_worker_thread+0x10/0x10 [    4.145970]  kthread+0x346/0x470 [    4.145976]  ? recalc_sigpending+0x19b/0x230 [    4.145980]  ? __pfx_kthread+0x10/0x10 [    4.145984]  ret_from_fork+0x4fb/0x6c0 [    4.145992]  ? __pfx_ret_from_fork+0x10/0x10 [    4.145995]  ? __switch_to+0x36c/0xbe0 [    4.145999]  ? __pfx_kthread+0x10/0x10 [    4.146003]  ret_from_fork_asm+0x1a/0x30 [    4.146013]  </TASK> [    4.146014] [    4.149858] Allocated by task 44: [    4.149953]  kasan_save_stack+0x33/0x60 [    4.150061]  kasan_save_track+0x14/0x30 [    4.150169]  __kasan_kmalloc+0x8f/0xa0 [    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0 [    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600 [    4.150529]  smb2_tree_connect+0x2e6/0x1000 [    4.150645]  handle_ksmbd_work+0x40f/0x1080 [    4.150761]  process_one_work+0x5fa/0xef0 [    4.150873]  worker_thread+0x54b/0xf70 [    4.150978]  kthread+0x346/0x470 [    4.151071]  ret_from_fork+0x4fb/0x6c0 [    4.151176]  ret_from_fork_asm+0x1a/0x30 [    4.151286] [    4.151332] Freed by task 44: [    4.151418]  kasan_save_stack+0x33/0x60 [    4.151526]  kasan_save_track+0x14/0x30 [    4.151634]  kasan_save_free_info+0x3b/0x60 [    4.151751]  __kasan_slab_free+0x43/0x70 [    4.151861]  kfree+0x1ca/0x430 [    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190 [    4.152088]  smb2_tree_disconnect+0x1cd/0x480 [    4.152211]  handle_ksmbd_work+0x40f/0x1080 [    4.152326]  process_one_work+0x5fa/0xef0 [    4.152438]  worker_thread+0x54b/0xf70 [    4.152545]  kthread+0x346/0x470 [    4.152638]  ret_from_fork+0x4fb/0x6c0 [    4.152743]  ret_from_fork_asm+0x1a/0x30 [    4.152853] [    4.152900] The buggy address belongs to the object at ffff88810430c180 [    4.152900]  which belongs to the cache kmalloc-96 of size 96 [    4.153226] The buggy address is located 20 bytes inside of [    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [    4.153549] [    4.153596] The buggy address belongs to the physical page: [    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [    4.154000] flags: 0x ---truncated---",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23455",
                                "url": "https://ubuntu.com/security/CVE-2026-23455",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()  In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read.  Add a check to ensure len is positive after the decrement.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43186",
                                "url": "https://ubuntu.com/security/CVE-2026-43186",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()  On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic.  Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it:    - in ioam6_iptunnel.c (send path, existing validation) to replace     the open-coded computation;   - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose     nodelen is inconsistent with the type field, before any data is     written.  Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-06 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43185",
                                "url": "https://ubuntu.com/security/CVE-2026-43185",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()  smb_direct_prepare_negotiation() casts an unsigned __u32 value from sp->max_recv_size and req->preferred_send_size to a signed int before computing min_t(int, ...). A maliciously provided preferred_send_size of 0x80000000 will return as smaller than max_recv_size, and then be used to set the maximum allowed alowed receive size for the next message.  By sending a second message with a large value (>1420 bytes) the attacker can then achieve a heap buffer overflow.  This fix replaces min_t(int, ...) with min_t(u32)",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-06 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43341",
                                "url": "https://ubuntu.com/security/CVE-2026-43341",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/ipv6: ioam6: prevent schema length wraparound in trace fill  ioam6_fill_trace_data() stores the schema contribution to the trace length in a u8. With bit 22 enabled and the largest schema payload, sclen becomes 1 + 1020 / 4, wraps from 256 to 0, and bypasses the remaining-space check. __ioam6_fill_trace_data() then positions the write cursor without reserving the schema area but still copies the 4-byte schema header and the full schema payload, overrunning the trace buffer.  Keep sclen in an unsigned int so the remaining-space check and the write cursor calculation both see the full schema length.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31607",
                                "url": "https://ubuntu.com/security/CVE-2026-31607",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  usbip: validate number_of_packets in usbip_pack_ret_submit()  When a USB/IP client receives a RET_SUBMIT response, usbip_pack_ret_submit() unconditionally overwrites urb->number_of_packets from the network PDU. This value is subsequently used as the loop bound in usbip_recv_iso() and usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible array whose size was fixed at URB allocation time based on the *original* number_of_packets from the CMD_SUBMIT.  A malicious USB/IP server can set number_of_packets in the response to a value larger than what was originally submitted, causing a heap out-of-bounds write when usbip_recv_iso() writes to urb->iso_frame_desc[i] beyond the allocated region.  KASAN confirmed this with kernel 7.0.0-rc5:    BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640   Write of size 4 at addr ffff888106351d40 by task vhci_rx/69    The buggy address is located 0 bytes to the right of    allocated 320-byte region [ffff888106351c00, ffff888106351d40)  The server side (stub_rx.c) and gadget side (vudc_rx.c) already validate number_of_packets in the CMD_SUBMIT path since commits c6688ef9f297 (\"usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input\") and b78d830f0049 (\"usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input\"). The server side validates against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point. On the client side we have the original URB, so we can use the tighter bound: the response must not exceed the original number_of_packets.  This mirrors the existing validation of actual_length against transfer_buffer_length in usbip_recv_xbuff(), which checks the response value against the original allocation size.  Kelvin Mbogo's series (\"usb: usbip: fix integer overflow in usbip_recv_iso()\", v2) hardens the receive-side functions themselves; this patch complements that work by catching the bad value at its source -- in usbip_pack_ret_submit() before the overwrite -- and using the tighter per-URB allocation bound rather than the global USBIP_MAX_ISO_PACKETS limit.  Fix this by checking rpdu->number_of_packets against urb->number_of_packets in usbip_pack_ret_submit() before the overwrite. On violation, clamp to zero so that usbip_recv_iso() and usbip_pad_iso() safely return early.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43383",
                                "url": "https://ubuntu.com/security/CVE-2026-43383",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tcp-md5: Fix MAC comparison to be constant-time  To prevent timing attacks, MACs need to be compared in constant time.  Use the appropriate helper function for this.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-68263",
                                "url": "https://ubuntu.com/security/CVE-2025-68263",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: ipc: fix use-after-free in ipc_msg_send_request  ipc_msg_send_request() waits for a generic netlink reply using an ipc_msg_table_entry on the stack. The generic netlink handler (handle_generic_event()/handle_response()) fills entry->response under ipc_msg_table_lock, but ipc_msg_send_request() used to validate and free entry->response without holding the same lock.  Under high concurrency this allows a race where handle_response() is copying data into entry->response while ipc_msg_send_request() has just freed it, leading to a slab-use-after-free reported by KASAN in handle_generic_event():    BUG: KASAN: slab-use-after-free in handle_generic_event+0x3c4/0x5f0 [ksmbd]   Write of size 12 at addr ffff888198ee6e20 by task pool/109349   ...   Freed by task:     kvfree     ipc_msg_send_request [ksmbd]     ksmbd_rpc_open -> ksmbd_session_rpc_open [ksmbd]  Fix by: - Taking ipc_msg_table_lock in ipc_msg_send_request() while validating   entry->response, freeing it when invalid, and removing the entry from   ipc_msg_table. - Returning the final entry->response pointer to the caller only after   the hash entry is removed under the lock. - Returning NULL in the error path, preserving the original API   semantics.  This makes all accesses to entry->response consistent with handle_response(), which already updates and fills the response buffer under ipc_msg_table_lock, and closes the race that allowed the UAF.",
                                "cve_priority": "critical",
                                "cve_public_date": "2025-12-16 15:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46243",
                                "url": "https://ubuntu.com/security/CVE-2026-46243",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: reject userspace cifs.spnego descriptions  cifs.spnego key descriptions contain authority-bearing fields such as pid, uid, creduid, and upcall_target that cifs.upcall treats as kernel-originating inputs. However, userspace can also create keys of this type through request_key(2) or add_key(2), allowing those fields to be supplied without CIFS origin.  Only accept cifs.spnego descriptions while CIFS is using its private spnego_cred to request the key.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-01 17:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43414",
                                "url": "https://ubuntu.com/security/CVE-2026-43414",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: qla2xxx: Completely fix fcport double free  In qla24xx_els_dcmd_iocb() sp->free is set to qla2x00_els_dcmd_sp_free(). When an error happens, this function is called by qla2x00_sp_release(), when kref_put() releases the first and the last reference.  qla2x00_els_dcmd_sp_free() frees fcport by calling qla2x00_free_fcport(). Doing it one more time after kref_put() is a bad idea.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43407",
                                "url": "https://ubuntu.com/security/CVE-2026-43407",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()  This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation.  This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length.  Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length.  BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262  CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace:  <TASK>  dump_stack_lvl+0x76/0xa0  print_report+0xd1/0x620  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? kasan_complete_mode_report_info+0x72/0x210  kasan_report+0xe7/0x130  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  __asan_report_load_n_noabort+0xf/0x20  ceph_handle_auth_reply+0x642/0x7a0 [libceph]  mon_dispatch+0x973/0x23d0 [libceph]  ? apparmor_socket_recvmsg+0x6b/0xa0  ? __pfx_mon_dispatch+0x10/0x10 [libceph]  ? __kasan_check_write+0x14/0x30i  ? mutex_unlock+0x7f/0xd0  ? __pfx_mutex_unlock+0x10/0x10  ? __pfx_do_recvmsg+0x10/0x10 [libceph]  ceph_con_process_message+0x1f1/0x650 [libceph]  process_message+0x1e/0x450 [libceph]  ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]  ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph]  ? save_fpregs_to_fpstate+0xb0/0x230  ? raw_spin_rq_unlock+0x17/0xa0  ? finish_task_switch.isra.0+0x13b/0x760  ? __switch_to+0x385/0xda0  ? __kasan_check_write+0x14/0x30  ? mutex_lock+0x8d/0xe0  ? __pfx_mutex_lock+0x10/0x10  ceph_con_workfn+0x248/0x10c0 [libceph]  process_one_work+0x629/0xf80  ? __kasan_check_write+0x14/0x30  worker_thread+0x87f/0x1570  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? __pfx_try_to_wake_up+0x10/0x10  ? kasan_print_address_stack_frame+0x1f7/0x280  ? __pfx_worker_thread+0x10/0x10  kthread+0x396/0x830  ? __pfx__raw_spin_lock_irq+0x10/0x10  ? __pfx_kthread+0x10/0x10  ? __kasan_check_write+0x14/0x30  ? recalc_sigpending+0x180/0x210  ? __pfx_kthread+0x10/0x10  ret_from_fork+0x3f7/0x610  ? __pfx_ret_from_fork+0x10/0x10  ? __switch_to+0x385/0xda0  ? __pfx_kthread+0x10/0x10  ret_from_fork_asm+0x1a/0x30  </TASK>  [ idryomov: replace if statements with ceph_decode_need() for   payload_len and result_msg_len ]",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43406",
                                "url": "https://ubuntu.com/security/CVE-2026-43406",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: prevent potential out-of-bounds reads in process_message_header()  If the message frame is (maliciously) corrupted in a way that the length of the control segment ends up being less than the size of the message header or a different frame is made to look like a message frame, out-of-bounds reads may ensue in process_message_header().  Perform an explicit bounds check before decoding the message header.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43304",
                                "url": "https://ubuntu.com/security/CVE-2026-43304",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: define and enforce CEPH_MAX_KEY_LEN  When decoding the key, verify that the key material would fit into a fixed-size buffer in process_auth_done() and generally has a sane length.  The new CEPH_MAX_KEY_LEN check replaces the existing check for a key with no key material which is a) not universal since CEPH_CRYPTO_NONE has to be excluded and b) doesn't provide much value since a smaller than needed key is just as invalid as no key -- this has to be handled elsewhere anyway.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-08 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37924",
                                "url": "https://ubuntu.com/security/CVE-2025-37924",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free in kerberos authentication  Setting sess->user = NULL was introduced to fix the dangling pointer created by ksmbd_free_user. However, it is possible another thread could be operating on the session and make use of sess->user after it has been passed to ksmbd_free_user but before sess->user is set to NULL.",
                                "cve_priority": "high",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37778",
                                "url": "https://ubuntu.com/security/CVE-2025-37778",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: Fix dangling pointer in krb_authenticate  krb_authenticate frees sess->user and does not set the pointer to NULL. It calls ksmbd_krb5_authenticate to reinitialise sess->user but that function may return without doing so. If that happens then smb2_sess_setup, which calls krb_authenticate, will be accessing free'd memory when it later uses sess->user.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-01 14:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux: 5.15.0-185.195 -proposed tracker (LP: #2157253)",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] update annotations scripts",
                            "    - [Packaging] resync retpoline extraction",
                            "",
                            "  * CVE-2026-45988",
                            "    - rxrpc: Fix re-decryption of RESPONSE packets",
                            "",
                            "  * CVE-2026-46195",
                            "    - smb: client: validate dacloffset before building DACL pointers",
                            "",
                            "  * CVE-2026-46135",
                            "    - nvmet-tcp: fix race between ICReq handling and queue teardown",
                            "",
                            "  * CVE-2026-31402",
                            "    - nfsd: fix heap overflow in NFSv4.0 LOCK replay cache",
                            "",
                            "  * CVE-2026-43071",
                            "    - dcache: Limit the minimal number of bucket to two",
                            "",
                            "  * CVE-2026-46119",
                            "    - libceph: Fix slab-out-of-bounds access in auth message processing",
                            "",
                            "  * CVE-2026-43501",
                            "    - ipv6: rpl: reserve mac_len headroom when recompressed SRH grows",
                            "",
                            "  * CVE-2026-46043",
                            "    - RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv",
                            "",
                            "  * CVE-2026-43493",
                            "    - crypto: pcrypt - Fix handling of MAY_BACKLOG requests",
                            "",
                            "  * CVE-2026-31637",
                            "    - rxrpc: reject undecryptable rxkad response tickets",
                            "",
                            "  * CVE-2026-31657",
                            "    - batman-adv: hold claim backbone gateways by reference",
                            "",
                            "  * CVE-2026-31685",
                            "    - netfilter: ip6t_eui64: reject invalid MAC header for all packets",
                            "",
                            "  * CVE-2026-43117",
                            "    - btrfs: tracepoints: get correct superblock from dentry in event",
                            "      btrfs_sync_file()",
                            "",
                            "  * CVE-2026-43114",
                            "    - netfilter: nft_set_pipapo_avx2: don't return non-matching entry on",
                            "      expiry",
                            "",
                            "  * CVE-2026-31478",
                            "    - ksmbd: replace hardcoded hdr2_len with offsetof() in",
                            "      smb2_calc_max_out_buf_len()",
                            "",
                            "  * CVE-2026-31668",
                            "    - seg6: separate dst_cache for input and output paths in seg6 lwtunnel",
                            "",
                            "  * CVE-2026-31659",
                            "    - batman-adv: reject oversized global TT response buffers",
                            "",
                            "  * CVE-2026-31649",
                            "    - net: stmmac: fix integer underflow in chain mode",
                            "",
                            "  * CVE-2026-31669",
                            "    - mptcp: fix slab-use-after-free in __inet_lookup_established",
                            "",
                            "  * CVE-2026-43011",
                            "    - net/x25: Fix potential double free of skb",
                            "",
                            "  * CVE-2026-43037",
                            "    - ip6_tunnel: clear skb2->cb[] in ip4ip6_err()",
                            "",
                            "  * CVE-2026-43038",
                            "    - ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()",
                            "",
                            "  * CVE-2026-31682",
                            "    - bridge: br_nd_send: linearize skb before parsing ND options",
                            "",
                            "  * CVE-2026-23450",
                            "    - net/smc: Only save the original clcsock callback functions",
                            "    - net/smc: Fix slab-out-of-bounds issue in fallback",
                            "    - net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()",
                            "",
                            "  * CVE-2026-23428",
                            "    - ksmbd: fix use-after-free of share_conf in compound request",
                            "",
                            "  * CVE-2026-23455",
                            "    - netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()",
                            "",
                            "  * CVE-2026-43186",
                            "    - ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()",
                            "",
                            "  * CVE-2026-43185",
                            "    - ksmbd: fix signededness bug in smb_direct_prepare_negotiation()",
                            "",
                            "  * CVE-2026-43341",
                            "    - net/ipv6: ioam6: prevent schema length wraparound in trace fill",
                            "",
                            "  * CVE-2026-31607",
                            "    - usbip: validate number_of_packets in usbip_pack_ret_submit()",
                            "",
                            "  * CVE-2026-43383",
                            "    - net/tcp-md5: Fix MAC comparison to be constant-time",
                            "",
                            "  * CVE-2025-68263",
                            "    - ksmbd: ipc: fix use-after-free in ipc_msg_send_request",
                            "",
                            "  * CVE-2026-46243",
                            "    - smb: client: reject userspace cifs.spnego descriptions",
                            "",
                            "  * CVE-2026-43414",
                            "    - scsi: qla2xxx: Completely fix fcport double free",
                            "",
                            "  * CVE-2026-43407",
                            "    - libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()",
                            "",
                            "  * CVE-2026-43406",
                            "    - libceph: prevent potential out-of-bounds reads in",
                            "      process_message_header()",
                            "",
                            "  * CVE-2026-43304",
                            "    - libceph: define and enforce CEPH_MAX_KEY_LEN",
                            "",
                            "  * CVE-2025-37924",
                            "    - ksmbd: fix use-after-free in kerberos authentication",
                            "",
                            "  * CVE-2025-37778",
                            "    - ksmbd: Fix dangling pointer in krb_authenticate",
                            ""
                        ],
                        "package": "linux",
                        "version": "5.15.0-185.195",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2157253,
                            1786013
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 17:54:32 +0200"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2022-48816",
                                "url": "https://ubuntu.com/security/CVE-2022-48816",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  SUNRPC: lock against ->sock changing during sysfs read  ->sock can be set to NULL asynchronously unless ->recv_mutex is held. So it is important to hold that mutex.  Otherwise a sysfs read can trigger an oops. Commit 17f09d3f619a (\"SUNRPC: Check if the xprt is connected before handling sysfs reads\") appears to attempt to fix this problem, but it only narrows the race window.",
                                "cve_priority": "medium",
                                "cve_public_date": "2024-07-16 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23182",
                                "url": "https://ubuntu.com/security/CVE-2026-23182",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra: Fix a memory leak in tegra_slink_probe()  In tegra_slink_probe(), when platform_get_irq() fails, it directly returns from the function with an error code, which causes a memory leak.  Replace it with a goto label to ensure proper cleanup.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23202",
                                "url": "https://ubuntu.com/security/CVE-2026-23202",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer  The curr_xfer field is read by the IRQ handler without holding the lock to check if a transfer is in progress. When clearing curr_xfer in the combined sequence transfer loop, protect it with the spinlock to prevent a race with the interrupt handler.  Protect the curr_xfer clearing at the exit path of tegra_qspi_combined_seq_xfer() with the spinlock to prevent a race with the interrupt handler that reads this field.  Without this protection, the IRQ handler could read a partially updated curr_xfer value, leading to NULL pointer dereference or use-after-free.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71089",
                                "url": "https://ubuntu.com/security/CVE-2025-71089",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  iommu: disable SVA when CONFIG_X86 is set  Patch series \"Fix stale IOTLB entries for kernel address space\", v7.  This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA).  In an SVA context, an IOMMU can cache kernel page table entries.  When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries.  This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption.  This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused.   This patch (of 8):  In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables.  The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table.  Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries.  The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings.  This can cause the IOMMU's internal caches to retain stale entries for kernel VA.  Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated.  The IOMMU could misinterpret the new data as valid page table entries.  The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation.  This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables.  Currently, SVA contexts are unprivileged and cannot access kernel mappings.  However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out.  This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern.  Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-01-13 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2023-53673",
                                "url": "https://ubuntu.com/security/CVE-2023-53673",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  Bluetooth: hci_event: call disconnect callback before deleting conn  In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.  ISO, L2CAP and SCO connections refer to the hci_conn without hci_conn_get, so disconn_cfm must be called so they can clean up their conn, otherwise use-after-free occurs.  ISO: ========================================================== iso_sock_connect:880: sk 00000000eabd6557 iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073 hci_dev_put:1487: hci0 orig refcnt 17 __iso_chan_add:214: conn 00000000b6251073 iso_sock_clear_timer:117: sock 00000000eabd6557 state 3 ... hci_rx_work:4085: hci0 Event packet hci_event_packet:7601: hci0: event 0x0f hci_cmd_status_evt:4346: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3107: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560 hci_conn_unlink:1102: hci0: hcon 000000001696f1fd hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2 hci_chan_list_flush:2780: hcon 000000001696f1fd hci_dev_put:1487: hci0 orig refcnt 21 hci_dev_put:1487: hci0 orig refcnt 20 hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c ... <no iso_* activity on sk/conn> ... iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557 BUG: kernel NULL pointer dereference, address: 0000000000000668 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth ==========================================================  L2CAP: ================================================================== hci_cmd_status_evt:4359: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3085: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585 hci_conn_unlink:1102: hci0: hcon ffff88800c999000 hci_chan_list_flush:2780: hcon ffff88800c999000 hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280 ... BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth] Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175  CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace:  <TASK>  dump_stack_lvl+0x5b/0x90  print_report+0xcf/0x670  ? __virt_addr_valid+0xf8/0x180  ? hci_send_acl+0x2d/0x540 [bluetooth]  kasan_report+0xa8/0xe0  ? hci_send_acl+0x2d/0x540 [bluetooth]  hci_send_acl+0x2d/0x540 [bluetooth]  ? __pfx___lock_acquire+0x10/0x10  l2cap_chan_send+0x1fd/0x1300 [bluetooth]  ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]  ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]  ? lock_release+0x1d5/0x3c0  ? mark_held_locks+0x1a/0x90  l2cap_sock_sendmsg+0x100/0x170 [bluetooth]  sock_write_iter+0x275/0x280  ? __pfx_sock_write_iter+0x10/0x10  ? __pfx___lock_acquire+0x10/0x10  do_iter_readv_writev+0x176/0x220  ? __pfx_do_iter_readv_writev+0x10/0x10  ? find_held_lock+0x83/0xa0  ? selinux_file_permission+0x13e/0x210  do_iter_write+0xda/0x340  vfs_writev+0x1b4/0x400  ? __pfx_vfs_writev+0x10/0x10  ? __seccomp_filter+0x112/0x750  ? populate_seccomp_data+0x182/0x220  ? __fget_light+0xdf/0x100  ? do_writev+0x19d/0x210  do_writev+0x19d/0x210  ? __pfx_do_writev+0x10/0x10  ? mark_held_locks+0x1a/0x90  do_syscall_64+0x60/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  ? do_syscall_64+0x6c/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7ff45cb23e64 Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: ---truncated---",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-07 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23262",
                                "url": "https://ubuntu.com/security/CVE-2026-23262",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  gve: Fix stats report corruption on queue count change  The driver and the NIC share a region in memory for stats reporting. The NIC calculates its offset into this region based on the total size of the stats region and the size of the NIC's stats.  When the number of queues is changed, the driver's stats region is resized. If the queue count is increased, the NIC can write past the end of the allocated stats region, causing memory corruption. If the queue count is decreased, there is a gap between the driver and NIC stats, leading to incorrect stats reporting.  This change fixes the issue by allocating stats region with maximum size, and the offset calculation for NIC stats is changed to match with the calculation of the NIC.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40082",
                                "url": "https://ubuntu.com/security/CVE-2025-40082",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()  BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186 Read of size 2 at addr ffff8880289ef218 by task syz.6.248/14290  CPU: 0 UID: 0 PID: 14290 Comm: syz.6.248 Not tainted 6.16.4 #1 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:  <TASK>  __dump_stack lib/dump_stack.c:94 [inline]  dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120  print_address_description mm/kasan/report.c:378 [inline]  print_report+0xca/0x5f0 mm/kasan/report.c:482  kasan_report+0xca/0x100 mm/kasan/report.c:595  hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186  hfsplus_listxattr+0x5b6/0xbd0 fs/hfsplus/xattr.c:738  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe0e9fae16d Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fe0eae67f98 EFLAGS: 00000246 ORIG_RAX: 00000000000000c3 RAX: ffffffffffffffda RBX: 00007fe0ea205fa0 RCX: 00007fe0e9fae16d RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000200000000000 RBP: 00007fe0ea0480f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fe0ea206038 R14: 00007fe0ea205fa0 R15: 00007fe0eae48000  </TASK>  Allocated by task 14290:  kasan_save_stack+0x24/0x50 mm/kasan/common.c:47  kasan_save_track+0x14/0x30 mm/kasan/common.c:68  poison_kmalloc_redzone mm/kasan/common.c:377 [inline]  __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394  kasan_kmalloc include/linux/kasan.h:260 [inline]  __do_kmalloc_node mm/slub.c:4333 [inline]  __kmalloc_noprof+0x219/0x540 mm/slub.c:4345  kmalloc_noprof include/linux/slab.h:909 [inline]  hfsplus_find_init+0x95/0x1f0 fs/hfsplus/bfind.c:21  hfsplus_listxattr+0x331/0xbd0 fs/hfsplus/xattr.c:697  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  When hfsplus_uni2asc is called from hfsplus_listxattr, it actually passes in a struct hfsplus_attr_unistr*. The size of the corresponding structure is different from that of hfsplus_unistr, so the previous fix (94458781aee6) is insufficient. The pointer on the unicode buffer is still going beyond the allocated memory.  This patch introduces two warpper functions hfsplus_uni2asc_xattr_str and hfsplus_uni2asc_str to process two unicode buffers, struct hfsplus_attr_unistr* and struct hfsplus_unistr* respectively. When ustrlen value is bigger than the allocated memory size, the ustrlen value is limited to an safe size.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-28 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37822",
                                "url": "https://ubuntu.com/security/CVE-2025-37822",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: uprobes: Add missing fence.i after building the XOL buffer  The XOL (execute out-of-line) buffer is used to single-step the replaced instruction(s) for uprobes. The RISC-V port was missing a proper fence.i (i$ flushing) after constructing the XOL buffer, which can result in incorrect execution of stale/broken instructions.  This was found running the BPF selftests \"test_progs: uprobe_autoattach, attach_probe\" on the Spacemit K1/X60, where the uprobes tests randomly blew up.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-08 07:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23190",
                                "url": "https://ubuntu.com/security/CVE-2026-23190",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ASoC: amd: fix memory leak in acp3x pdm dma ops",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23112",
                                "url": "https://ubuntu.com/security/CVE-2026-23112",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec  nvmet_tcp_build_pdu_iovec() could walk past cmd->req.sg when a PDU length or offset exceeds sg_cnt and then use bogus sg->length/offset values, leading to _copy_to_iter() GPF/KASAN. Guard sg_idx, remaining entries, and sg->length/offset before building the bvec.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23111",
                                "url": "https://ubuntu.com/security/CVE-2026-23111",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23180",
                                "url": "https://ubuntu.com/security/CVE-2026-23180",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: add bounds check for if_id in IRQ handler  The IRQ handler extracts if_id from the upper 16 bits of the hardware status register and uses it to index into ethsw->ports[] without validation. Since if_id can be any 16-bit value (0-65535) but the ports array is only allocated with sw_attr.num_ifs elements, this can lead to an out-of-bounds read potentially.  Add a bounds check before accessing the array, consistent with the existing validation in dpaa2_switch_rx().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23256",
                                "url": "https://ubuntu.com/security/CVE-2026-23256",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Compile tested only. Issue found using code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23257",
                                "url": "https://ubuntu.com/security/CVE-2026-23257",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Also, decrement i in the devlink_alloc failure path to point to the last successfully allocated index.  Compile tested only. Issue found using code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23258",
                                "url": "https://ubuntu.com/security/CVE-2026-23258",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Initialize netdev pointer before queue setup  In setup_nic_devices(), the netdev is allocated using alloc_etherdev_mq(). However, the pointer to this structure is stored in oct->props[i].netdev only after the calls to netif_set_real_num_rx_queues() and netif_set_real_num_tx_queues().  If either of these functions fails, setup_nic_devices() returns an error without freeing the allocated netdev. Since oct->props[i].netdev is still NULL at this point, the cleanup function liquidio_destroy_nic_device() will fail to find and free the netdev, resulting in a memory leak.  Fix this by initializing oct->props[i].netdev before calling the queue setup functions. This ensures that the netdev is properly accessible for cleanup in case of errors.  Compile tested only. Issue found using a prototype static analysis tool and code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23206",
                                "url": "https://ubuntu.com/security/CVE-2026-23206",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero  The driver allocates arrays for ports, FDBs, and filter blocks using kcalloc() with ethsw->sw_attr.num_ifs as the element count. When the device reports zero interfaces (either due to hardware configuration or firmware issues), kcalloc(0, ...) returns ZERO_SIZE_PTR (0x10) instead of NULL.  Later in dpaa2_switch_probe(), the NAPI initialization unconditionally accesses ethsw->ports[0]->netdev, which attempts to dereference ZERO_SIZE_PTR (address 0x10), resulting in a kernel panic.  Add a check to ensure num_ifs is greater than zero after retrieving device attributes. This prevents the zero-sized allocations and subsequent invalid pointer dereference.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23176",
                                "url": "https://ubuntu.com/security/CVE-2026-23176",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  platform/x86: toshiba_haps: Fix memory leaks in add/remove routines  toshiba_haps_add() leaks the haps object allocated by it if it returns an error after allocating that object successfully.  toshiba_haps_remove() does not free the object pointed to by toshiba_haps before clearing that pointer, so it becomes unreachable allocated memory.  Address these memory leaks by using devm_kzalloc() for allocating the memory in question.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23216",
                                "url": "https://ubuntu.com/security/CVE-2026-23216",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()  In iscsit_dec_conn_usage_count(), the function calls complete() while holding the conn->conn_usage_lock. As soon as complete() is invoked, the waiter (such as iscsit_close_connection()) may wake up and proceed to free the iscsit_conn structure.  If the waiter frees the memory before the current thread reaches spin_unlock_bh(), it results in a KASAN slab-use-after-free as the function attempts to release a lock within the already-freed connection structure.  Fix this by releasing the spinlock before calling complete().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-18 15:18:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23193",
                                "url": "https://ubuntu.com/security/CVE-2026-23193",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()  In iscsit_dec_session_usage_count(), the function calls complete() while holding the sess->session_usage_lock. Similar to the connection usage count logic, the waiter signaled by complete() (e.g., in the session release path) may wake up and free the iscsit_session structure immediately.  This creates a race condition where the current thread may attempt to execute spin_unlock_bh() on a session structure that has already been deallocated, resulting in a KASAN slab-use-after-free.  To resolve this, release the session_usage_lock before calling complete() to ensure all dereferences of the sess pointer are finished before the waiter is allowed to proceed with deallocation.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71220",
                                "url": "https://ubuntu.com/security/CVE-2025-71220",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe()  When ksmbd_iov_pin_rsp() fails, we should call ksmbd_session_rpc_close().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71222",
                                "url": "https://ubuntu.com/security/CVE-2025-71222",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: wlcore: ensure skb headroom before skb_push  This avoids occasional skb_under_panic Oops from wl1271_tx_work. In this case, headroom is less than needed (typically 110 - 94 = 16 bytes).",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71224",
                                "url": "https://ubuntu.com/security/CVE-2025-71224",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined  ieee80211_ocb_rx_no_sta() assumes a valid channel context, which is only present after JOIN_OCB.  RX may run before JOIN_OCB is executed, in which case the OCB interface is not operational. Skip RX peer handling when the interface is not joined to avoid warnings in the RX path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-68214",
                                "url": "https://ubuntu.com/security/CVE-2025-68214",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  timers: Fix NULL function pointer race in timer_shutdown_sync()  There is a race condition between timer_shutdown_sync() and timer expiration that can lead to hitting a WARN_ON in expire_timers().  The issue occurs when timer_shutdown_sync() clears the timer function to NULL while the timer is still running on another CPU. The race scenario looks like this:  CPU0\t\t\t\t\tCPU1 \t\t\t\t\t<SOFTIRQ> \t\t\t\t\tlock_timer_base() \t\t\t\t\texpire_timers() \t\t\t\t\tbase->running_timer = timer; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t[call_timer_fn enter] \t\t\t\t\tmod_timer() \t\t\t\t\t... timer_shutdown_sync() lock_timer_base() // For now, will not detach the timer but only clear its function to NULL if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base() \t\t\t\t\t[call_timer_fn exit] \t\t\t\t\tlock_timer_base() \t\t\t\t\tbase->running_timer = NULL; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t... \t\t\t\t\t// Now timer is pending while its function set to NULL. \t\t\t\t\t// next timer trigger \t\t\t\t\t<SOFTIRQ> \t\t\t\t\texpire_timers() \t\t\t\t\tWARN_ON_ONCE(!fn) // hit \t\t\t\t\t... lock_timer_base() // Now timer will detach if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base()  The problem is that timer_shutdown_sync() clears the timer function regardless of whether the timer is currently running. This can leave a pending timer with a NULL function pointer, which triggers the WARN_ON_ONCE(!fn) check in expire_timers().  Fix this by only clearing the timer function when actually detaching the timer. If the timer is running, leave the function pointer intact, which is safe because the timer will be properly detached when it finishes running.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-16 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38201",
                                "url": "https://ubuntu.com/security/CVE-2025-38201",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX  Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset.  Similar to:    b541ba7d1f5a (\"netfilter: conntrack: clamp maximum hashtable size to INT_MAX\")",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-07-04 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23198",
                                "url": "https://ubuntu.com/security/CVE-2026-23198",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: Don't clobber irqfd routing type when deassigning irqfd  When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI.  Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information.  As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone.  As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace).  As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list).  And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information.  As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd.  Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity():    BUG: kernel NULL pointer dereference, address: 0000000000000018   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0   Oops: Oops: 0000 [#1] SMP   CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--5dddc257e6b2-irqfd #31 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:amd_iommu_update_ga+0x19/0xe0   Call Trace:    <TASK>    avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd]    __avic_vcpu_load+0xf4/0x130 [kvm_amd]    kvm_arch_vcpu_load+0x89/0x210 [kvm]    vcpu_load+0x30/0x40 [kvm]    kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm]    kvm_vcpu_ioctl+0x571/0x6a0 [kvm]    __se_sys_ioctl+0x6d/0xb0    do_syscall_64+0x6f/0x9d0    entry_SYSCALL_64_after_hwframe+0x4b/0x53   RIP: 0033:0x46893b     </TASK>   ---[ end trace 0000000000000000 ]---  If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment.    list_add corruption. next->prev should be prev (ffff8d474d5cd588),                        but was 0000000000000000. (next=ffff8d8658f86530).   ------------[ cut here ]------------   kernel BUG at lib/list_debug.c:31!   Oops: invalid opcode: 0000 [#1] SMP   CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--f19dc4d680ba-irqfd #28 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:__list_add_valid_or_report+0x97/0xc0   Call Trace:    <TASK>    avic_pi_update_irte+0x28e/0x2b0 [kvm_amd]    kvm_pi_update_irte+0xbf/0x190 [kvm]    kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm]    irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23272",
                                "url": "https://ubuntu.com/security/CVE-2026-23272",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: unconditionally bump set->nelems before insertion  In case that the set is full, a new element gets published then removed without waiting for the RCU grace period, while RCU reader can be walking over it already.  To address this issue, add the element transaction even if set is full, but toggle the set_full flag to report -ENFILE so the abort path safely unwinds the set to its previous state.  As for element updates, decrement set->nelems to restore it.  A simpler fix is to call synchronize_rcu() in the error path. However, with a large batch adding elements to already maxed-out set, this could cause noticeable slowdown of such batches.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-20 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31418",
                                "url": "https://ubuntu.com/security/CVE-2026-31418",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ipset: drop logically empty buckets in mtype_del  mtype_del() counts empty slots below n->pos in k, but it only drops the bucket when both n->pos and k are zero. This misses buckets whose live entries have all been removed while n->pos still points past deleted slots.  Treat a bucket as empty when all positions below n->pos are unused and release it directly instead of shrinking it further.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23278",
                                "url": "https://ubuntu.com/security/CVE-2026-23278",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: always walk all pending catchall elements  During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch.  If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate.  Otherwise, we get:  WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404  RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables]  [..]  __nft_set_elem_destroy+0x106/0x380 [nf_tables]  nf_tables_abort_release+0x348/0x8d0 [nf_tables]  nf_tables_abort+0xcf2/0x3ac0 [nf_tables]  nfnetlink_rcv_batch+0x9c9/0x20e0 [..]",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-20 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46300",
                                "url": "https://ubuntu.com/security/CVE-2026-46300",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: skbuff: preserve shared-frag marker during coalescing  skb_try_coalesce() can attach paged frags from @from to @to.  If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.  That breaks the invariant relied on by later in-place writers.  In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data().  If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags.  Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags.  The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-23 12:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46333",
                                "url": "https://ubuntu.com/security/CVE-2026-46333",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ptrace: slightly saner 'get_dumpable()' logic  The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm.  And almost all users do in fact use it only for the case where the task has a mm pointer.  But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for threads that no longer have a VM (and maybe never did, like most kernel threads).  It's not what this flag was designed for, but it is what it is.  The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional \"drop capabilities\" model doesn't make any difference for this all.  Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached \"last dumpability\" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-15 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43500",
                                "url": "https://ubuntu.com/security/CVE-2026-43500",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present  The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true.  An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec().  Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true.  This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO).  The OOM/trace handling already in place is reused.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-11 08:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43284",
                                "url": "https://ubuntu.com/security/CVE-2026-43284",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  xfrm: esp: avoid in-place decrypt on shared skb frags  MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs.  That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb.  Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path.  This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb->data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 08:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31419",
                                "url": "https://ubuntu.com/security/CVE-2026-31419",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: bonding: fix use-after-free in bond_xmit_broadcast()  bond_xmit_broadcast() reuses the original skb for the last slave (determined by bond_is_last_slave()) and clones it for others. Concurrent slave enslave/release can mutate the slave list during RCU-protected iteration, changing which slave is \"last\" mid-loop. This causes the original skb to be double-consumed (double-freed).  Replace the racy bond_is_last_slave() check with a simple index comparison (i + 1 == slaves_count) against the pre-snapshot slave count taken via READ_ONCE() before the loop.  This preserves the zero-copy optimization for the last slave while making the \"last\" determination stable against concurrent list mutations.  The UAF can trigger the following crash:  ================================================================== BUG: KASAN: slab-use-after-free in skb_clone Read of size 8 at addr ffff888100ef8d40 by task exploit/147  CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY Call Trace:  <TASK>  dump_stack_lvl (lib/dump_stack.c:123)  print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)  kasan_report (mm/kasan/report.c:597)  skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)  bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)  bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)  dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)  __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)  ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)  ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)  ip6_output (net/ipv6/ip6_output.c:250)  ip6_send_skb (net/ipv6/ip6_output.c:1985)  udp_v6_send_skb (net/ipv6/udp.c:1442)  udpv6_sendmsg (net/ipv6/udp.c:1733)  __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)  __x64_sys_sendto (net/socket.c:2209)  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)  </TASK>  Allocated by task 147:  Freed by task 147:  The buggy address belongs to the object at ffff888100ef8c80  which belongs to the cache skbuff_head_cache of size 224 The buggy address is located 192 bytes inside of  freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)  Memory state around the buggy address:  ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc  ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc                                                     ^  ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb  ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31431",
                                "url": "https://ubuntu.com/security/CVE-2026-31431",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: algif_aead - Revert to operating out-of-place  This mostly reverts commit 72548b093ee3 except for the copying of the associated data.  There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings.  Get rid of all the complexity added for in-place operation and just copy the AD directly.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-22 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31533",
                                "url": "https://ubuntu.com/security/CVE-2026-31533",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption  The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 (\"net: tls: handle backlogging of crypto requests\"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry.  When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist.  The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record.  Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-23 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31504",
                                "url": "https://ubuntu.com/security/CVE-2026-31504",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: fix fanout UAF in packet_release() via NETDEV_UP race  `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.  The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.  This bug was found following an additional audit with Claude Code based on CVE-2025-38617.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-22 14:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux: 5.15.0-184.194 -proposed tracker (LP: #2154219)",
                            "",
                            "  * Kernel regression (6.8.0-117.generic) (LP: #2153556)",
                            "    - net: bonding: update the slave array for broadcast mode",
                            "    - bonding: do not set usable_slaves for broadcast mode",
                            "",
                            "  * kernel null pointer BUG in 5.15 when disconnecting from cifs share",
                            "    (LP: #2150730)",
                            "    - SAUCE: cifs: fix null pointer dereference in find_ipc_from_server_path",
                            "",
                            "  * SUNRPC: System wide grep leads to NULL pointer deference in sysfs reads",
                            "    (LP: #2149767)",
                            "    - SUNRPC: Check if the xprt is connected before handling sysfs reads",
                            "    - SUNRPC: Do not dereference non-socket transports in sysfs",
                            "",
                            "  * SUNRPC: System wide grep leads to NULL pointer deference in sysfs reads",
                            "    (LP: #2149767) // CVE-2022-48816",
                            "    - SUNRPC: lock against ->sock changing during sysfs read",
                            "",
                            "  * iptables connlimit traffic loss (LP: #2149872)",
                            "    - netfilter: nf_conncount: fix tracking of connections from localhost",
                            "",
                            "  * Some powerpc test from ubuntu_kernel_selftests timeout with 45 seconds",
                            "    (LP: #2141536)",
                            "    - selftests/powerpc: Lower run time of count_stcx_fail test",
                            "    - selftests/powerpc: Give all tests 2 minutes timeout",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598)",
                            "    - x86/kfence: fix booting on 32bit non-PAE systems",
                            "    - platform/x86: intel_telemetry: Fix swapped arrays in PSS output",
                            "    - rbd: check for EOD after exclusive lock is ensured to be held",
                            "    - ARM: 9468/1: fix memset64() on big-endian",
                            "    - mm/kfence: randomize the freelist on initialization",
                            "    - Documentation: Remove bogus claim about del_timer_sync()",
                            "    - timers: Get rid of del_singleshot_timer_sync()",
                            "    - Documentation: Replace del_timer/del_timer_sync()",
                            "    - timers: Update the documentation to reflect on the new timer_shutdown()",
                            "      API",
                            "    - Bluetooth: hci_qca: Fix the teardown problem for real",
                            "    - binderfs: fix ida_alloc_max() upper bound",
                            "    - net: usb: sr9700: support devices with virtual driver CD",
                            "    - block,bfq: fix aux stat accumulation destination",
                            "    - HID: multitouch: add MT_QUIRK_STICKY_FINGERS to MT_CLS_VTL",
                            "    - HID: intel-ish-hid: Reset enum_devices_done before enumeration",
                            "    - HID: playstation: Center initial joystick axes to prevent spurious",
                            "      events",
                            "    - ALSA: hda/realtek: add HP Laptop 15s-eq1xxx mute LED quirk",
                            "    - netfilter: replace -EEXIST with -EBUSY",
                            "    - HID: quirks: Add another Chicony HP 5MP Cameras to hid_ignore_list",
                            "    - HID: Apply quirk HID_QUIRK_ALWAYS_POLL to Edifier QR30 (2d99:a101)",
                            "    - ring-buffer: Avoid softlockup in ring_buffer_resize() during memory free",
                            "    - wifi: mac80211: collect station statistics earlier when disconnect",
                            "    - ASoC: davinci-evm: Fix reference leak in davinci_evm_probe",
                            "    - ASoC: tlv320adcx140: Propagate error codes during probe",
                            "    - wifi: cfg80211: Fix bitrate calculation overflow for HE rates",
                            "    - wifi: mac80211: don't increment crypto_tx_tailroom_needed_cnt twice",
                            "    - platform/x86: intel_telemetry: Fix PSS event register mask",
                            "    - tipc: use kfree_sensitive() for session key material",
                            "    - hwmon: (occ) Mark occ_init_attribute() as __printf",
                            "    - nvmet-tcp: add an helper to free the cmd buffers",
                            "    - nvmet-tcp: fix memory leak when performing a controller reset",
                            "    - nvmet-tcp: fix regression in data_digest calculation",
                            "    - nvmet-tcp: don't map pages which can't come from HIGHMEM",
                            "    - tracing: Fix ftrace event field alignments",
                            "    - gve: Correct ethtool rx_dropped calculation",
                            "    - spi: tegra210-quad: Return IRQ_HANDLED when timeout already processed",
                            "      transfer",
                            "    - spi: tegra210-quad: Move curr_xfer read inside spinlock",
                            "    - spi: tegra210-quad: Protect curr_xfer assignment in",
                            "      tegra_qspi_setup_transfer_one",
                            "    - spi: tegra210-quad: Protect curr_xfer clearing in",
                            "      tegra_qspi_non_combined_seq_xfer",
                            "    - nvmet-tcp: pass iov_len instead of sg->length to bvec_set_page()",
                            "    - riscv: Replace function-like macro by static inline function",
                            "    - Linux 5.15.200",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23182",
                            "    - spi: tegra: Fix a memory leak in tegra_slink_probe()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23202",
                            "    - spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71089",
                            "    - iommu: disable SVA when CONFIG_X86 is set",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2023-53673",
                            "    - Bluetooth: hci_event: call disconnect callback before deleting conn",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23262",
                            "    - gve: Fix stats report corruption on queue count change",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-40082",
                            "    - hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-37822",
                            "    - riscv: uprobes: Add missing fence.i after building the XOL buffer",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23190",
                            "    - ASoC: amd: fix memory leak in acp3x pdm dma ops",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23112",
                            "    - nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23111",
                            "    - netfilter: nf_tables: fix inverted genmask check in",
                            "      nft_map_catchall_activate()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23180",
                            "    - dpaa2-switch: add bounds check for if_id in IRQ handler",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23256",
                            "    - net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23257",
                            "    - net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23258",
                            "    - net: liquidio: Initialize netdev pointer before queue setup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23206",
                            "    - dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23176",
                            "    - platform/x86: toshiba_haps: Fix memory leaks in add/remove routines",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23216",
                            "    - scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23193",
                            "    - scsi: target: iscsi: Fix use-after-free in",
                            "      iscsit_dec_session_usage_count()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71220",
                            "    - smb/server: call ksmbd_session_rpc_close() on error path in",
                            "      create_smb2_pipe()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71222",
                            "    - wifi: wlcore: ensure skb headroom before skb_push",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71224",
                            "    - wifi: mac80211: ocb: skip rx_no_sta when interface is not joined",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-68214",
                            "    - timers: Fix NULL function pointer race in timer_shutdown_sync()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-38201",
                            "    - netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23198",
                            "    - KVM: Don't clobber irqfd routing type when deassigning irqfd",
                            "",
                            "  * CVE-2026-23272",
                            "    - netfilter: nf_tables: always increment set element count",
                            "    - netfilter: nf_tables: fix set size with rbtree backend",
                            "    - netfilter: nf_tables: unconditionally bump set->nelems before insertion",
                            "",
                            "  * CVE-2026-31418",
                            "    - netfilter: ipset: drop logically empty buckets in mtype_del",
                            "",
                            "  * CVE-2026-23278",
                            "    - netfilter: nf_tables: always walk all pending catchall elements",
                            "",
                            "  * CVE-2026-46300",
                            "    - net: skbuff: preserve shared-frag marker during coalescing",
                            "    - net: skbuff: propagate shared-frag marker through frag-transfer helpers",
                            "",
                            "  * net/rds: reset op_nents when zerocopy page pin fails (LP: #2153962)",
                            "    - net/rds: reset op_nents when zerocopy page pin fails",
                            "",
                            "  * CVE-2026-46333",
                            "    - ptrace: slightly saner 'get_dumpable()' logic",
                            "",
                            "  * CVE-2026-43500",
                            "    - rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present",
                            "",
                            "  * CVE-2026-43284",
                            "    - xfrm: esp: avoid in-place decrypt on shared skb frags",
                            "    - xfrm: esp: ipv4: fix up flags setting",
                            "",
                            "  * CVE-2026-31419",
                            "    - net: bonding: fix use-after-free in bond_xmit_broadcast()",
                            "",
                            "  * CVE-2026-31431",
                            "    - crypto: scatterwalk - Backport memcpy_sglist()",
                            "    - crypto: algif_aead - use memcpy_sglist() instead of null skcipher",
                            "    - crypto: algif_aead - Revert to operating out-of-place",
                            "    - crypto: algif_aead - snapshot IV for async AEAD requests",
                            "    - crypto: authenc - use memcpy_sglist() instead of null skcipher",
                            "    - crypto: authencesn - Do not place hiseq at end of dst for out-of-place",
                            "      decryption",
                            "    - crypto: authencesn - Fix src offset when decrypting in-place",
                            "    - crypto: af_alg - Fix page reassignment overflow in af_alg_pull_tsgl",
                            "    - crypto: algif_aead - Fix minimum RX size check for decryption",
                            "",
                            "  * CVE-2026-31533",
                            "    - net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption",
                            "",
                            "  * CVE-2026-31504",
                            "    - net: fix fanout UAF in packet_release() via NETDEV_UP race",
                            ""
                        ],
                        "package": "linux",
                        "version": "5.15.0-184.194",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2154219,
                            2153556,
                            2150730,
                            2149767,
                            2149767,
                            2149872,
                            2141536,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2153962
                        ],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:19:26 +0200"
                    }
                ],
                "notes": "linux-headers-5.15.0-185 version '5.15.0-185.195' (source package linux version '5.15.0-185.195') was added. linux-headers-5.15.0-185 version '5.15.0-185.195' has the same source package name, linux, as removed package linux-headers-5.15.0-181. As such we can use the source package version of the removed package, '5.15.0-181.191', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-5.15.0-185-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-181.191",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-185.195",
                    "version": "5.15.0-185.195"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-45988",
                        "url": "https://ubuntu.com/security/CVE-2026-45988",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Fix re-decryption of RESPONSE packets  If a RESPONSE packet gets a temporary failure during processing, it may end up in a partially decrypted state - and then get requeued for a retry.  Fix this by just discarding the packet; we will send another CHALLENGE packet and thereby elicit a further response.  Similarly, discard an incoming CHALLENGE packet if we get an error whilst generating a RESPONSE; the server will send another CHALLENGE.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-27 14:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46195",
                        "url": "https://ubuntu.com/security/CVE-2026-46195",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: validate dacloffset before building DACL pointers  parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor.  On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths.  Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46135",
                        "url": "https://ubuntu.com/security/CVE-2026-46135",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: fix race between ICReq handling and queue teardown  nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown.  If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock.  If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue.  The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference.  Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started.  Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31402",
                        "url": "https://ubuntu.com/security/CVE-2026-31402",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nfsd: fix heap overflow in NFSv4.0 LOCK replay cache  The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT).  When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory.  This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial.  We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large.  Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43071",
                        "url": "https://ubuntu.com/security/CVE-2026-43071",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dcache: Limit the minimal number of bucket to two  There is an OOB read problem on dentry_hashtable when user sets 'dhash_entries=1':   BUG: unable to handle page fault for address: ffff888b30b774b0   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   Oops: Oops: 0000 [#1] SMP PTI   RIP: 0010:__d_lookup+0x56/0x120    Call Trace:     d_lookup.cold+0x16/0x5d     lookup_dcache+0x27/0xf0     lookup_one_qstr_excl+0x2a/0x180     start_dirop+0x55/0xa0     simple_start_creating+0x8d/0xa0     debugfs_start_creating+0x8c/0x180     debugfs_create_dir+0x1d/0x1c0     pinctrl_init+0x6d/0x140     do_one_initcall+0x6d/0x3d0     kernel_init_freeable+0x39f/0x460     kernel_init+0x2a/0x260  There will be only one bucket in dentry_hashtable when dhash_entries is set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then, following process will access more than one buckets(which memory region is not allocated) in dentry_hashtable:  d_lookup   b = d_hash(hash)     dentry_hashtable + ((u32)hashlen >> d_hash_shift)     // The C standard defines the behavior of right shift amounts     // exceeding the bit width of the operand as undefined. The     // result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',     // so 'b' will point to an unallocated memory region.   hlist_bl_for_each_entry_rcu(b)    hlist_bl_first_rcu(head)     h->first  // read OOB!  Fix it by limiting the minimal number of dentry_hashtable bucket to two, so that 'd_hash_shift' won't exceeds the bit width of type u32.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-05-05 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46119",
                        "url": "https://ubuntu.com/security/CVE-2026-46119",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix slab-out-of-bounds access in auth message processing  If a (potentially corrupted) message of type CEPH_MSG_AUTH_REPLY contains a positive value in its result field, it is treated as an error code by ceph_handle_auth_reply() and returned to handle_auth_reply(). Thereafter, an attempt is made to send the preallocated message of type CEPH_MSG_AUTH, where the returned value is interpreted as the size of the front segment to send. If the result value in the message is greater than the size of the memory buffer allocated for the front segment, an out-of-bounds access occurs, and the content of the memory region beyond this buffer is sent out.  This patch fixes the issue by treating only negative values in the result field as errors. Positive values are therefore treated as success in the same way as a zero value. Additionally, a BUG_ON is added to __send_prepared_auth_request() comparing the len parameter to front_alloc_len to prevent sending the message if it exceeds the bounds of the allocation and to make it easier to catch any logic flaws leading to this.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43501",
                        "url": "https://ubuntu.com/security/CVE-2026-43501",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: rpl: reserve mac_len headroom when recompressed SRH grows  ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps the next segment into ipv6_hdr->daddr, recompresses, then pulls the old header and pushes the new one plus the IPv6 header back.  The recompressed header can be larger than the received one when the swap reduces the common-prefix length the segments share with daddr (CmprI=0, CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).  pskb_expand_head() was gated on segments_left == 0, so on earlier segments the push consumed unchecked headroom.  Once skb_push() leaves fewer than skb->mac_len bytes in front of data, skb_mac_header_rebuild()'s call to:  \tskb_set_mac_header(skb, -skb->mac_len);  will store (data - head) - mac_len into the u16 mac_header field, which wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB past skb->head.  A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.  Fix this by expanding the head whenever the remaining room is less than the push size plus mac_len, and request that much extra so the rebuilt MAC header fits afterwards.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-21 13:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46043",
                        "url": "https://ubuntu.com/security/CVE-2026-46043",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv  rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used.  However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen:    payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)                  - RXE_ICRC_SIZE  This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users.  Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-27 14:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43493",
                        "url": "https://ubuntu.com/security/CVE-2026-43493",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: pcrypt - Fix handling of MAY_BACKLOG requests  MAY_BACKLOG requests can return EBUSY.  Handle them by checking for that value and filtering out EINPROGRESS notifications.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-19 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31637",
                        "url": "https://ubuntu.com/security/CVE-2026-31637",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: reject undecryptable rxkad response tickets  rxkad_decrypt_ticket() decrypts the RXKAD response ticket and then parses the buffer as plaintext without checking whether crypto_skcipher_decrypt() succeeded.  A malformed RESPONSE can therefore use a non-block-aligned ticket length, make the decrypt operation fail, and still drive the ticket parser with attacker-controlled bytes.  Check the decrypt result and abort the connection with RXKADBADTICKET when ticket decryption fails.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31657",
                        "url": "https://ubuntu.com/security/CVE-2026-31657",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: hold claim backbone gateways by reference  batadv_bla_add_claim() can replace claim->backbone_gw and drop the old gateway's last reference while readers still follow the pointer.  The netlink claim dump path dereferences claim->backbone_gw->orig and takes claim->backbone_gw->crc_lock without pinning the underlying backbone gateway. batadv_bla_check_claim() still has the same naked pointer access pattern.  Reuse batadv_bla_claim_get_backbone_gw() in both readers so they operate on a stable gateway reference until the read-side work is complete. This keeps the dump and claim-check paths aligned with the lifetime rules introduced for the other BLA claim readers.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31685",
                        "url": "https://ubuntu.com/security/CVE-2026-31685",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ip6t_eui64: reject invalid MAC header for all packets  `eui64_mt6()` derives a modified EUI-64 from the Ethernet source address and compares it with the low 64 bits of the IPv6 source address.  The existing guard only rejects an invalid MAC header when `par->fragoff != 0`. For packets with `par->fragoff == 0`, `eui64_mt6()` can still reach `eth_hdr(skb)` even when the MAC header is not valid.  Fix this by removing the `par->fragoff != 0` condition so that packets with an invalid MAC header are rejected before accessing `eth_hdr(skb)`.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-25 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43117",
                        "url": "https://ubuntu.com/security/CVE-2026-43117",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: tracepoints: get correct superblock from dentry in event btrfs_sync_file()  If overlay is used on top of btrfs, dentry->d_sb translates to overlay's super block and fsid assignment will lead to a crash.  Use file_inode(file)->i_sb to always get btrfs_sb.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-06 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43114",
                        "url": "https://ubuntu.com/security/CVE-2026-43114",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry  New test case fails unexpectedly when avx2 matching functions are used.  The test first loads a ranomly generated pipapo set with 'ipv4 . port' key, i.e.  nft -f foo.  This works.  Then, it reloads the set after a flush: (echo flush set t s; cat foo) | nft -f -  This is expected to work, because its the same set after all and it was already loaded once.  But with avx2, this fails: nft reports a clashing element.  The reported clash is of following form:      We successfully re-inserted       a . b       c . d  Then we try to insert a . d  avx2 finds the already existing a . d, which (due to 'flush set') is marked as invalid in the new generation.  It skips the element and moves to next.  Due to incorrect masking, the skip-step finds the next matching element *only considering the first field*,  i.e. we return the already reinserted \"a . b\", even though the last field is different and the entry should not have been matched.  No such error is reported for the generic c implementation (no avx2) or when the last field has to use the 'nft_pipapo_avx2_lookup_slow' fallback.  Bisection points to 7711f4bb4b36 (\"netfilter: nft_set_pipapo: fix range overlap detection\") but that fix merely uncovers this bug.  Before this commit, the wrong element is returned, but erronously reported as a full, identical duplicate.  The root-cause is too early return in the avx2 match functions. When we process the last field, we should continue to process data until the entire input size has been consumed to make sure no stale bits remain in the map.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-06 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31478",
                        "url": "https://ubuntu.com/security/CVE-2026-31478",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()  After this commit (e2b76ab8b5c9 \"ksmbd: add support for read compound\"), response buffer management was changed to use dynamic iov array. In the new design, smb2_calc_max_out_buf_len() expects the second argument (hdr2_len) to be the offset of ->Buffer field in the response structure, not a hardcoded magic number. Fix the remaining call sites to use the correct offsetof() value.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-22 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31668",
                        "url": "https://ubuntu.com/security/CVE-2026-31668",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  seg6: separate dst_cache for input and output paths in seg6 lwtunnel  The seg6 lwtunnel uses a single dst_cache per encap route, shared between seg6_input_core() and seg6_output_core(). These two paths can perform the post-encap SID lookup in different routing contexts (e.g., ip rules matching on the ingress interface, or VRF table separation). Whichever path runs first populates the cache, and the other reuses it blindly, bypassing its own lookup.  Fix this by splitting the cache into cache_input and cache_output, so each path maintains its own cached dst independently.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31659",
                        "url": "https://ubuntu.com/security/CVE-2026-31659",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: reject oversized global TT response buffers  batadv_tt_prepare_tvlv_global_data() builds the allocation length for a global TT response in 16-bit temporaries. When a remote originator advertises a large enough global TT, the TT payload length plus the VLAN header offset can exceed 65535 and wrap before kmalloc().  The full-table response path still uses the original TT payload length when it fills tt_change, so the wrapped allocation is too small and batadv_tt_prepare_tvlv_global_data() writes past the end of the heap object before the later packet-size check runs.  Fix this by rejecting TT responses whose TVLV value length cannot fit in the 16-bit TVLV payload length field.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31649",
                        "url": "https://ubuntu.com/security/CVE-2026-31649",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: stmmac: fix integer underflow in chain mode  The jumbo_frm() chain-mode implementation unconditionally computes      len = nopaged_len - bmax;  where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB.  However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb->len (total length including page fragments):      is_jumbo = stmmac_is_jumbo_frm(priv, skb->len, enh_desc);  When a packet has a small linear portion (nopaged_len <= bmax) but a large total length due to page fragments (skb->len > bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx).  This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb->data + bmax * i pointers far beyond the skb buffer to dma_map_single().  On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware.  Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax).  Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31669",
                        "url": "https://ubuntu.com/security/CVE-2026-31669",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mptcp: fix slab-use-after-free in __inet_lookup_established  The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register().  However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently.  This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established.  Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43011",
                        "url": "https://ubuntu.com/security/CVE-2026-43011",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/x25: Fix potential double free of skb  When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain:  x25_queue_rx_frame returns 1     |     v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0     |     v x25_process_rx_frame returns queued=0     |     v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again  This would free the same skb twice. Looking at x25_backlog_rcv:  net/x25/x25_in.c:x25_backlog_rcv() {     ...     queued = x25_process_rx_frame(sk, skb);     ...     if (!queued)         kfree_skb(skb); }",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43037",
                        "url": "https://ubuntu.com/security/CVE-2026-43037",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ip6_tunnel: clear skb2->cb[] in ip4ip6_err()  Oskar Kjos reported the following problem.  ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).  To fix this we clear skb2->cb[], as suggested by Oskar Kjos.  Also add minimal IPv4 header validation (version == 4, ihl >= 5).",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43038",
                        "url": "https://ubuntu.com/security/CVE-2026-43038",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()  Sashiko AI-review observed:    In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet   where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2   and passed to icmp6_send(), it uses IP6CB(skb2).    IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso   offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm   at offset 18.    If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao   would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called   and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO).    This would scan the inner, attacker-controlled IPv6 packet starting at that   offset, potentially returning a fake TLV without checking if the remaining   packet length can hold the full 18-byte struct ipv6_destopt_hao.    Could mip6_addr_swap() then perform a 16-byte swap that extends past the end   of the packet data into skb_shared_info?    Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and   ip6ip6_err() to prevent this?  This patch implements the first suggestion.  I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31682",
                        "url": "https://ubuntu.com/security/CVE-2026-31682",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  bridge: br_nd_send: linearize skb before parsing ND options  br_nd_send() parses neighbour discovery options from ns->opt[] and assumes that these options are in the linear part of request.  Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns->opt[] in that case can access data past the linear buffer.  Linearize request before option parsing and derive ns from the linear network header.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-25 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23450",
                        "url": "https://ubuntu.com/security/CVE-2026-23450",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()  Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1].  smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release().  This leads to two issues:  1) NULL pointer dereference: sk_user_data is NULL when    accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the    smc_sock is freed before its fields (e.g., queued_smc_hs,    ori_af_ops) are accessed.  The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race):    CPU A (softirq)              CPU B (process ctx)    tcp_v4_rcv()     TCP_NEW_SYN_RECV:     sk = req->rsk_listener     sock_hold(sk)     /* No lock on listener */                                smc_close_active():                                  write_lock_bh(cb_lock)                                  sk_user_data = NULL                                  write_unlock_bh(cb_lock)                                  ...                                  smc_clcsock_release()                                  sock_put(smc->sk) x2                                    -> smc_sock freed!     tcp_check_req()       smc_tcp_syn_recv_sock():         smc = user_data(sk)           -> NULL or dangling         smc->queued_smc_hs           -> crash!  Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed.  Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight.  - Set SOCK_RCU_FREE on the SMC listen socket so that   smc_sock freeing is deferred until after the RCU grace   period. This guarantees the memory is still valid when   accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the   smc_sock. If the refcount has already reached zero (close   path completed), it returns false and we bail out safely.  Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected.  Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied.  [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23428",
                        "url": "https://ubuntu.com/security/CVE-2026-23428",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free of share_conf in compound request  smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely.  If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf.  KASAN report:  [    4.144653] ================================================================== [    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [    4.145772] [    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [    4.145875] Workqueue: ksmbd-io handle_ksmbd_work [    4.145888] Call Trace: [    4.145892]  <TASK> [    4.145894]  dump_stack_lvl+0x64/0x80 [    4.145910]  print_report+0xce/0x660 [    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [    4.145928]  ? smb2_write+0xc74/0xe70 [    4.145931]  kasan_report+0xce/0x100 [    4.145934]  ? smb2_write+0xc74/0xe70 [    4.145937]  smb2_write+0xc74/0xe70 [    4.145939]  ? __pfx_smb2_write+0x10/0x10 [    4.145942]  ? _raw_spin_unlock+0xe/0x30 [    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0 [    4.145948]  ? smb2_tree_disconnect+0x31c/0x480 [    4.145951]  handle_ksmbd_work+0x40f/0x1080 [    4.145953]  process_one_work+0x5fa/0xef0 [    4.145962]  ? assign_work+0x122/0x3e0 [    4.145964]  worker_thread+0x54b/0xf70 [    4.145967]  ? __pfx_worker_thread+0x10/0x10 [    4.145970]  kthread+0x346/0x470 [    4.145976]  ? recalc_sigpending+0x19b/0x230 [    4.145980]  ? __pfx_kthread+0x10/0x10 [    4.145984]  ret_from_fork+0x4fb/0x6c0 [    4.145992]  ? __pfx_ret_from_fork+0x10/0x10 [    4.145995]  ? __switch_to+0x36c/0xbe0 [    4.145999]  ? __pfx_kthread+0x10/0x10 [    4.146003]  ret_from_fork_asm+0x1a/0x30 [    4.146013]  </TASK> [    4.146014] [    4.149858] Allocated by task 44: [    4.149953]  kasan_save_stack+0x33/0x60 [    4.150061]  kasan_save_track+0x14/0x30 [    4.150169]  __kasan_kmalloc+0x8f/0xa0 [    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0 [    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600 [    4.150529]  smb2_tree_connect+0x2e6/0x1000 [    4.150645]  handle_ksmbd_work+0x40f/0x1080 [    4.150761]  process_one_work+0x5fa/0xef0 [    4.150873]  worker_thread+0x54b/0xf70 [    4.150978]  kthread+0x346/0x470 [    4.151071]  ret_from_fork+0x4fb/0x6c0 [    4.151176]  ret_from_fork_asm+0x1a/0x30 [    4.151286] [    4.151332] Freed by task 44: [    4.151418]  kasan_save_stack+0x33/0x60 [    4.151526]  kasan_save_track+0x14/0x30 [    4.151634]  kasan_save_free_info+0x3b/0x60 [    4.151751]  __kasan_slab_free+0x43/0x70 [    4.151861]  kfree+0x1ca/0x430 [    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190 [    4.152088]  smb2_tree_disconnect+0x1cd/0x480 [    4.152211]  handle_ksmbd_work+0x40f/0x1080 [    4.152326]  process_one_work+0x5fa/0xef0 [    4.152438]  worker_thread+0x54b/0xf70 [    4.152545]  kthread+0x346/0x470 [    4.152638]  ret_from_fork+0x4fb/0x6c0 [    4.152743]  ret_from_fork_asm+0x1a/0x30 [    4.152853] [    4.152900] The buggy address belongs to the object at ffff88810430c180 [    4.152900]  which belongs to the cache kmalloc-96 of size 96 [    4.153226] The buggy address is located 20 bytes inside of [    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [    4.153549] [    4.153596] The buggy address belongs to the physical page: [    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [    4.154000] flags: 0x ---truncated---",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23455",
                        "url": "https://ubuntu.com/security/CVE-2026-23455",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()  In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read.  Add a check to ensure len is positive after the decrement.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43186",
                        "url": "https://ubuntu.com/security/CVE-2026-43186",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()  On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic.  Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it:    - in ioam6_iptunnel.c (send path, existing validation) to replace     the open-coded computation;   - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose     nodelen is inconsistent with the type field, before any data is     written.  Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-06 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43185",
                        "url": "https://ubuntu.com/security/CVE-2026-43185",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()  smb_direct_prepare_negotiation() casts an unsigned __u32 value from sp->max_recv_size and req->preferred_send_size to a signed int before computing min_t(int, ...). A maliciously provided preferred_send_size of 0x80000000 will return as smaller than max_recv_size, and then be used to set the maximum allowed alowed receive size for the next message.  By sending a second message with a large value (>1420 bytes) the attacker can then achieve a heap buffer overflow.  This fix replaces min_t(int, ...) with min_t(u32)",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-06 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43341",
                        "url": "https://ubuntu.com/security/CVE-2026-43341",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/ipv6: ioam6: prevent schema length wraparound in trace fill  ioam6_fill_trace_data() stores the schema contribution to the trace length in a u8. With bit 22 enabled and the largest schema payload, sclen becomes 1 + 1020 / 4, wraps from 256 to 0, and bypasses the remaining-space check. __ioam6_fill_trace_data() then positions the write cursor without reserving the schema area but still copies the 4-byte schema header and the full schema payload, overrunning the trace buffer.  Keep sclen in an unsigned int so the remaining-space check and the write cursor calculation both see the full schema length.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31607",
                        "url": "https://ubuntu.com/security/CVE-2026-31607",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  usbip: validate number_of_packets in usbip_pack_ret_submit()  When a USB/IP client receives a RET_SUBMIT response, usbip_pack_ret_submit() unconditionally overwrites urb->number_of_packets from the network PDU. This value is subsequently used as the loop bound in usbip_recv_iso() and usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible array whose size was fixed at URB allocation time based on the *original* number_of_packets from the CMD_SUBMIT.  A malicious USB/IP server can set number_of_packets in the response to a value larger than what was originally submitted, causing a heap out-of-bounds write when usbip_recv_iso() writes to urb->iso_frame_desc[i] beyond the allocated region.  KASAN confirmed this with kernel 7.0.0-rc5:    BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640   Write of size 4 at addr ffff888106351d40 by task vhci_rx/69    The buggy address is located 0 bytes to the right of    allocated 320-byte region [ffff888106351c00, ffff888106351d40)  The server side (stub_rx.c) and gadget side (vudc_rx.c) already validate number_of_packets in the CMD_SUBMIT path since commits c6688ef9f297 (\"usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input\") and b78d830f0049 (\"usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input\"). The server side validates against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point. On the client side we have the original URB, so we can use the tighter bound: the response must not exceed the original number_of_packets.  This mirrors the existing validation of actual_length against transfer_buffer_length in usbip_recv_xbuff(), which checks the response value against the original allocation size.  Kelvin Mbogo's series (\"usb: usbip: fix integer overflow in usbip_recv_iso()\", v2) hardens the receive-side functions themselves; this patch complements that work by catching the bad value at its source -- in usbip_pack_ret_submit() before the overwrite -- and using the tighter per-URB allocation bound rather than the global USBIP_MAX_ISO_PACKETS limit.  Fix this by checking rpdu->number_of_packets against urb->number_of_packets in usbip_pack_ret_submit() before the overwrite. On violation, clamp to zero so that usbip_recv_iso() and usbip_pad_iso() safely return early.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43383",
                        "url": "https://ubuntu.com/security/CVE-2026-43383",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tcp-md5: Fix MAC comparison to be constant-time  To prevent timing attacks, MACs need to be compared in constant time.  Use the appropriate helper function for this.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-68263",
                        "url": "https://ubuntu.com/security/CVE-2025-68263",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: ipc: fix use-after-free in ipc_msg_send_request  ipc_msg_send_request() waits for a generic netlink reply using an ipc_msg_table_entry on the stack. The generic netlink handler (handle_generic_event()/handle_response()) fills entry->response under ipc_msg_table_lock, but ipc_msg_send_request() used to validate and free entry->response without holding the same lock.  Under high concurrency this allows a race where handle_response() is copying data into entry->response while ipc_msg_send_request() has just freed it, leading to a slab-use-after-free reported by KASAN in handle_generic_event():    BUG: KASAN: slab-use-after-free in handle_generic_event+0x3c4/0x5f0 [ksmbd]   Write of size 12 at addr ffff888198ee6e20 by task pool/109349   ...   Freed by task:     kvfree     ipc_msg_send_request [ksmbd]     ksmbd_rpc_open -> ksmbd_session_rpc_open [ksmbd]  Fix by: - Taking ipc_msg_table_lock in ipc_msg_send_request() while validating   entry->response, freeing it when invalid, and removing the entry from   ipc_msg_table. - Returning the final entry->response pointer to the caller only after   the hash entry is removed under the lock. - Returning NULL in the error path, preserving the original API   semantics.  This makes all accesses to entry->response consistent with handle_response(), which already updates and fills the response buffer under ipc_msg_table_lock, and closes the race that allowed the UAF.",
                        "cve_priority": "critical",
                        "cve_public_date": "2025-12-16 15:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46243",
                        "url": "https://ubuntu.com/security/CVE-2026-46243",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: reject userspace cifs.spnego descriptions  cifs.spnego key descriptions contain authority-bearing fields such as pid, uid, creduid, and upcall_target that cifs.upcall treats as kernel-originating inputs. However, userspace can also create keys of this type through request_key(2) or add_key(2), allowing those fields to be supplied without CIFS origin.  Only accept cifs.spnego descriptions while CIFS is using its private spnego_cred to request the key.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-01 17:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43414",
                        "url": "https://ubuntu.com/security/CVE-2026-43414",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: qla2xxx: Completely fix fcport double free  In qla24xx_els_dcmd_iocb() sp->free is set to qla2x00_els_dcmd_sp_free(). When an error happens, this function is called by qla2x00_sp_release(), when kref_put() releases the first and the last reference.  qla2x00_els_dcmd_sp_free() frees fcport by calling qla2x00_free_fcport(). Doing it one more time after kref_put() is a bad idea.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43407",
                        "url": "https://ubuntu.com/security/CVE-2026-43407",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()  This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation.  This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length.  Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length.  BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262  CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace:  <TASK>  dump_stack_lvl+0x76/0xa0  print_report+0xd1/0x620  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? kasan_complete_mode_report_info+0x72/0x210  kasan_report+0xe7/0x130  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  __asan_report_load_n_noabort+0xf/0x20  ceph_handle_auth_reply+0x642/0x7a0 [libceph]  mon_dispatch+0x973/0x23d0 [libceph]  ? apparmor_socket_recvmsg+0x6b/0xa0  ? __pfx_mon_dispatch+0x10/0x10 [libceph]  ? __kasan_check_write+0x14/0x30i  ? mutex_unlock+0x7f/0xd0  ? __pfx_mutex_unlock+0x10/0x10  ? __pfx_do_recvmsg+0x10/0x10 [libceph]  ceph_con_process_message+0x1f1/0x650 [libceph]  process_message+0x1e/0x450 [libceph]  ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]  ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph]  ? save_fpregs_to_fpstate+0xb0/0x230  ? raw_spin_rq_unlock+0x17/0xa0  ? finish_task_switch.isra.0+0x13b/0x760  ? __switch_to+0x385/0xda0  ? __kasan_check_write+0x14/0x30  ? mutex_lock+0x8d/0xe0  ? __pfx_mutex_lock+0x10/0x10  ceph_con_workfn+0x248/0x10c0 [libceph]  process_one_work+0x629/0xf80  ? __kasan_check_write+0x14/0x30  worker_thread+0x87f/0x1570  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? __pfx_try_to_wake_up+0x10/0x10  ? kasan_print_address_stack_frame+0x1f7/0x280  ? __pfx_worker_thread+0x10/0x10  kthread+0x396/0x830  ? __pfx__raw_spin_lock_irq+0x10/0x10  ? __pfx_kthread+0x10/0x10  ? __kasan_check_write+0x14/0x30  ? recalc_sigpending+0x180/0x210  ? __pfx_kthread+0x10/0x10  ret_from_fork+0x3f7/0x610  ? __pfx_ret_from_fork+0x10/0x10  ? __switch_to+0x385/0xda0  ? __pfx_kthread+0x10/0x10  ret_from_fork_asm+0x1a/0x30  </TASK>  [ idryomov: replace if statements with ceph_decode_need() for   payload_len and result_msg_len ]",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43406",
                        "url": "https://ubuntu.com/security/CVE-2026-43406",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: prevent potential out-of-bounds reads in process_message_header()  If the message frame is (maliciously) corrupted in a way that the length of the control segment ends up being less than the size of the message header or a different frame is made to look like a message frame, out-of-bounds reads may ensue in process_message_header().  Perform an explicit bounds check before decoding the message header.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43304",
                        "url": "https://ubuntu.com/security/CVE-2026-43304",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: define and enforce CEPH_MAX_KEY_LEN  When decoding the key, verify that the key material would fit into a fixed-size buffer in process_auth_done() and generally has a sane length.  The new CEPH_MAX_KEY_LEN check replaces the existing check for a key with no key material which is a) not universal since CEPH_CRYPTO_NONE has to be excluded and b) doesn't provide much value since a smaller than needed key is just as invalid as no key -- this has to be handled elsewhere anyway.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-08 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37924",
                        "url": "https://ubuntu.com/security/CVE-2025-37924",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free in kerberos authentication  Setting sess->user = NULL was introduced to fix the dangling pointer created by ksmbd_free_user. However, it is possible another thread could be operating on the session and make use of sess->user after it has been passed to ksmbd_free_user but before sess->user is set to NULL.",
                        "cve_priority": "high",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37778",
                        "url": "https://ubuntu.com/security/CVE-2025-37778",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: Fix dangling pointer in krb_authenticate  krb_authenticate frees sess->user and does not set the pointer to NULL. It calls ksmbd_krb5_authenticate to reinitialise sess->user but that function may return without doing so. If that happens then smb2_sess_setup, which calls krb_authenticate, will be accessing free'd memory when it later uses sess->user.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-01 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2022-48816",
                        "url": "https://ubuntu.com/security/CVE-2022-48816",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  SUNRPC: lock against ->sock changing during sysfs read  ->sock can be set to NULL asynchronously unless ->recv_mutex is held. So it is important to hold that mutex.  Otherwise a sysfs read can trigger an oops. Commit 17f09d3f619a (\"SUNRPC: Check if the xprt is connected before handling sysfs reads\") appears to attempt to fix this problem, but it only narrows the race window.",
                        "cve_priority": "medium",
                        "cve_public_date": "2024-07-16 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23182",
                        "url": "https://ubuntu.com/security/CVE-2026-23182",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra: Fix a memory leak in tegra_slink_probe()  In tegra_slink_probe(), when platform_get_irq() fails, it directly returns from the function with an error code, which causes a memory leak.  Replace it with a goto label to ensure proper cleanup.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23202",
                        "url": "https://ubuntu.com/security/CVE-2026-23202",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer  The curr_xfer field is read by the IRQ handler without holding the lock to check if a transfer is in progress. When clearing curr_xfer in the combined sequence transfer loop, protect it with the spinlock to prevent a race with the interrupt handler.  Protect the curr_xfer clearing at the exit path of tegra_qspi_combined_seq_xfer() with the spinlock to prevent a race with the interrupt handler that reads this field.  Without this protection, the IRQ handler could read a partially updated curr_xfer value, leading to NULL pointer dereference or use-after-free.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71089",
                        "url": "https://ubuntu.com/security/CVE-2025-71089",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  iommu: disable SVA when CONFIG_X86 is set  Patch series \"Fix stale IOTLB entries for kernel address space\", v7.  This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA).  In an SVA context, an IOMMU can cache kernel page table entries.  When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries.  This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption.  This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused.   This patch (of 8):  In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables.  The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table.  Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries.  The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings.  This can cause the IOMMU's internal caches to retain stale entries for kernel VA.  Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated.  The IOMMU could misinterpret the new data as valid page table entries.  The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation.  This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables.  Currently, SVA contexts are unprivileged and cannot access kernel mappings.  However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out.  This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern.  Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-01-13 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2023-53673",
                        "url": "https://ubuntu.com/security/CVE-2023-53673",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  Bluetooth: hci_event: call disconnect callback before deleting conn  In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.  ISO, L2CAP and SCO connections refer to the hci_conn without hci_conn_get, so disconn_cfm must be called so they can clean up their conn, otherwise use-after-free occurs.  ISO: ========================================================== iso_sock_connect:880: sk 00000000eabd6557 iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073 hci_dev_put:1487: hci0 orig refcnt 17 __iso_chan_add:214: conn 00000000b6251073 iso_sock_clear_timer:117: sock 00000000eabd6557 state 3 ... hci_rx_work:4085: hci0 Event packet hci_event_packet:7601: hci0: event 0x0f hci_cmd_status_evt:4346: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3107: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560 hci_conn_unlink:1102: hci0: hcon 000000001696f1fd hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2 hci_chan_list_flush:2780: hcon 000000001696f1fd hci_dev_put:1487: hci0 orig refcnt 21 hci_dev_put:1487: hci0 orig refcnt 20 hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c ... <no iso_* activity on sk/conn> ... iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557 BUG: kernel NULL pointer dereference, address: 0000000000000668 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth ==========================================================  L2CAP: ================================================================== hci_cmd_status_evt:4359: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3085: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585 hci_conn_unlink:1102: hci0: hcon ffff88800c999000 hci_chan_list_flush:2780: hcon ffff88800c999000 hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280 ... BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth] Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175  CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace:  <TASK>  dump_stack_lvl+0x5b/0x90  print_report+0xcf/0x670  ? __virt_addr_valid+0xf8/0x180  ? hci_send_acl+0x2d/0x540 [bluetooth]  kasan_report+0xa8/0xe0  ? hci_send_acl+0x2d/0x540 [bluetooth]  hci_send_acl+0x2d/0x540 [bluetooth]  ? __pfx___lock_acquire+0x10/0x10  l2cap_chan_send+0x1fd/0x1300 [bluetooth]  ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]  ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]  ? lock_release+0x1d5/0x3c0  ? mark_held_locks+0x1a/0x90  l2cap_sock_sendmsg+0x100/0x170 [bluetooth]  sock_write_iter+0x275/0x280  ? __pfx_sock_write_iter+0x10/0x10  ? __pfx___lock_acquire+0x10/0x10  do_iter_readv_writev+0x176/0x220  ? __pfx_do_iter_readv_writev+0x10/0x10  ? find_held_lock+0x83/0xa0  ? selinux_file_permission+0x13e/0x210  do_iter_write+0xda/0x340  vfs_writev+0x1b4/0x400  ? __pfx_vfs_writev+0x10/0x10  ? __seccomp_filter+0x112/0x750  ? populate_seccomp_data+0x182/0x220  ? __fget_light+0xdf/0x100  ? do_writev+0x19d/0x210  do_writev+0x19d/0x210  ? __pfx_do_writev+0x10/0x10  ? mark_held_locks+0x1a/0x90  do_syscall_64+0x60/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  ? do_syscall_64+0x6c/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7ff45cb23e64 Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: ---truncated---",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-07 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23262",
                        "url": "https://ubuntu.com/security/CVE-2026-23262",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  gve: Fix stats report corruption on queue count change  The driver and the NIC share a region in memory for stats reporting. The NIC calculates its offset into this region based on the total size of the stats region and the size of the NIC's stats.  When the number of queues is changed, the driver's stats region is resized. If the queue count is increased, the NIC can write past the end of the allocated stats region, causing memory corruption. If the queue count is decreased, there is a gap between the driver and NIC stats, leading to incorrect stats reporting.  This change fixes the issue by allocating stats region with maximum size, and the offset calculation for NIC stats is changed to match with the calculation of the NIC.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40082",
                        "url": "https://ubuntu.com/security/CVE-2025-40082",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()  BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186 Read of size 2 at addr ffff8880289ef218 by task syz.6.248/14290  CPU: 0 UID: 0 PID: 14290 Comm: syz.6.248 Not tainted 6.16.4 #1 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:  <TASK>  __dump_stack lib/dump_stack.c:94 [inline]  dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120  print_address_description mm/kasan/report.c:378 [inline]  print_report+0xca/0x5f0 mm/kasan/report.c:482  kasan_report+0xca/0x100 mm/kasan/report.c:595  hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186  hfsplus_listxattr+0x5b6/0xbd0 fs/hfsplus/xattr.c:738  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe0e9fae16d Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fe0eae67f98 EFLAGS: 00000246 ORIG_RAX: 00000000000000c3 RAX: ffffffffffffffda RBX: 00007fe0ea205fa0 RCX: 00007fe0e9fae16d RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000200000000000 RBP: 00007fe0ea0480f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fe0ea206038 R14: 00007fe0ea205fa0 R15: 00007fe0eae48000  </TASK>  Allocated by task 14290:  kasan_save_stack+0x24/0x50 mm/kasan/common.c:47  kasan_save_track+0x14/0x30 mm/kasan/common.c:68  poison_kmalloc_redzone mm/kasan/common.c:377 [inline]  __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394  kasan_kmalloc include/linux/kasan.h:260 [inline]  __do_kmalloc_node mm/slub.c:4333 [inline]  __kmalloc_noprof+0x219/0x540 mm/slub.c:4345  kmalloc_noprof include/linux/slab.h:909 [inline]  hfsplus_find_init+0x95/0x1f0 fs/hfsplus/bfind.c:21  hfsplus_listxattr+0x331/0xbd0 fs/hfsplus/xattr.c:697  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  When hfsplus_uni2asc is called from hfsplus_listxattr, it actually passes in a struct hfsplus_attr_unistr*. The size of the corresponding structure is different from that of hfsplus_unistr, so the previous fix (94458781aee6) is insufficient. The pointer on the unicode buffer is still going beyond the allocated memory.  This patch introduces two warpper functions hfsplus_uni2asc_xattr_str and hfsplus_uni2asc_str to process two unicode buffers, struct hfsplus_attr_unistr* and struct hfsplus_unistr* respectively. When ustrlen value is bigger than the allocated memory size, the ustrlen value is limited to an safe size.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-28 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37822",
                        "url": "https://ubuntu.com/security/CVE-2025-37822",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: uprobes: Add missing fence.i after building the XOL buffer  The XOL (execute out-of-line) buffer is used to single-step the replaced instruction(s) for uprobes. The RISC-V port was missing a proper fence.i (i$ flushing) after constructing the XOL buffer, which can result in incorrect execution of stale/broken instructions.  This was found running the BPF selftests \"test_progs: uprobe_autoattach, attach_probe\" on the Spacemit K1/X60, where the uprobes tests randomly blew up.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-08 07:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23190",
                        "url": "https://ubuntu.com/security/CVE-2026-23190",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ASoC: amd: fix memory leak in acp3x pdm dma ops",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23112",
                        "url": "https://ubuntu.com/security/CVE-2026-23112",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec  nvmet_tcp_build_pdu_iovec() could walk past cmd->req.sg when a PDU length or offset exceeds sg_cnt and then use bogus sg->length/offset values, leading to _copy_to_iter() GPF/KASAN. Guard sg_idx, remaining entries, and sg->length/offset before building the bvec.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23111",
                        "url": "https://ubuntu.com/security/CVE-2026-23111",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23180",
                        "url": "https://ubuntu.com/security/CVE-2026-23180",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: add bounds check for if_id in IRQ handler  The IRQ handler extracts if_id from the upper 16 bits of the hardware status register and uses it to index into ethsw->ports[] without validation. Since if_id can be any 16-bit value (0-65535) but the ports array is only allocated with sw_attr.num_ifs elements, this can lead to an out-of-bounds read potentially.  Add a bounds check before accessing the array, consistent with the existing validation in dpaa2_switch_rx().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23256",
                        "url": "https://ubuntu.com/security/CVE-2026-23256",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Compile tested only. Issue found using code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23257",
                        "url": "https://ubuntu.com/security/CVE-2026-23257",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Also, decrement i in the devlink_alloc failure path to point to the last successfully allocated index.  Compile tested only. Issue found using code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23258",
                        "url": "https://ubuntu.com/security/CVE-2026-23258",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Initialize netdev pointer before queue setup  In setup_nic_devices(), the netdev is allocated using alloc_etherdev_mq(). However, the pointer to this structure is stored in oct->props[i].netdev only after the calls to netif_set_real_num_rx_queues() and netif_set_real_num_tx_queues().  If either of these functions fails, setup_nic_devices() returns an error without freeing the allocated netdev. Since oct->props[i].netdev is still NULL at this point, the cleanup function liquidio_destroy_nic_device() will fail to find and free the netdev, resulting in a memory leak.  Fix this by initializing oct->props[i].netdev before calling the queue setup functions. This ensures that the netdev is properly accessible for cleanup in case of errors.  Compile tested only. Issue found using a prototype static analysis tool and code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23206",
                        "url": "https://ubuntu.com/security/CVE-2026-23206",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero  The driver allocates arrays for ports, FDBs, and filter blocks using kcalloc() with ethsw->sw_attr.num_ifs as the element count. When the device reports zero interfaces (either due to hardware configuration or firmware issues), kcalloc(0, ...) returns ZERO_SIZE_PTR (0x10) instead of NULL.  Later in dpaa2_switch_probe(), the NAPI initialization unconditionally accesses ethsw->ports[0]->netdev, which attempts to dereference ZERO_SIZE_PTR (address 0x10), resulting in a kernel panic.  Add a check to ensure num_ifs is greater than zero after retrieving device attributes. This prevents the zero-sized allocations and subsequent invalid pointer dereference.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23176",
                        "url": "https://ubuntu.com/security/CVE-2026-23176",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  platform/x86: toshiba_haps: Fix memory leaks in add/remove routines  toshiba_haps_add() leaks the haps object allocated by it if it returns an error after allocating that object successfully.  toshiba_haps_remove() does not free the object pointed to by toshiba_haps before clearing that pointer, so it becomes unreachable allocated memory.  Address these memory leaks by using devm_kzalloc() for allocating the memory in question.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23216",
                        "url": "https://ubuntu.com/security/CVE-2026-23216",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()  In iscsit_dec_conn_usage_count(), the function calls complete() while holding the conn->conn_usage_lock. As soon as complete() is invoked, the waiter (such as iscsit_close_connection()) may wake up and proceed to free the iscsit_conn structure.  If the waiter frees the memory before the current thread reaches spin_unlock_bh(), it results in a KASAN slab-use-after-free as the function attempts to release a lock within the already-freed connection structure.  Fix this by releasing the spinlock before calling complete().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-18 15:18:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23193",
                        "url": "https://ubuntu.com/security/CVE-2026-23193",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()  In iscsit_dec_session_usage_count(), the function calls complete() while holding the sess->session_usage_lock. Similar to the connection usage count logic, the waiter signaled by complete() (e.g., in the session release path) may wake up and free the iscsit_session structure immediately.  This creates a race condition where the current thread may attempt to execute spin_unlock_bh() on a session structure that has already been deallocated, resulting in a KASAN slab-use-after-free.  To resolve this, release the session_usage_lock before calling complete() to ensure all dereferences of the sess pointer are finished before the waiter is allowed to proceed with deallocation.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71220",
                        "url": "https://ubuntu.com/security/CVE-2025-71220",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe()  When ksmbd_iov_pin_rsp() fails, we should call ksmbd_session_rpc_close().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71222",
                        "url": "https://ubuntu.com/security/CVE-2025-71222",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: wlcore: ensure skb headroom before skb_push  This avoids occasional skb_under_panic Oops from wl1271_tx_work. In this case, headroom is less than needed (typically 110 - 94 = 16 bytes).",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71224",
                        "url": "https://ubuntu.com/security/CVE-2025-71224",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined  ieee80211_ocb_rx_no_sta() assumes a valid channel context, which is only present after JOIN_OCB.  RX may run before JOIN_OCB is executed, in which case the OCB interface is not operational. Skip RX peer handling when the interface is not joined to avoid warnings in the RX path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-68214",
                        "url": "https://ubuntu.com/security/CVE-2025-68214",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  timers: Fix NULL function pointer race in timer_shutdown_sync()  There is a race condition between timer_shutdown_sync() and timer expiration that can lead to hitting a WARN_ON in expire_timers().  The issue occurs when timer_shutdown_sync() clears the timer function to NULL while the timer is still running on another CPU. The race scenario looks like this:  CPU0\t\t\t\t\tCPU1 \t\t\t\t\t<SOFTIRQ> \t\t\t\t\tlock_timer_base() \t\t\t\t\texpire_timers() \t\t\t\t\tbase->running_timer = timer; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t[call_timer_fn enter] \t\t\t\t\tmod_timer() \t\t\t\t\t... timer_shutdown_sync() lock_timer_base() // For now, will not detach the timer but only clear its function to NULL if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base() \t\t\t\t\t[call_timer_fn exit] \t\t\t\t\tlock_timer_base() \t\t\t\t\tbase->running_timer = NULL; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t... \t\t\t\t\t// Now timer is pending while its function set to NULL. \t\t\t\t\t// next timer trigger \t\t\t\t\t<SOFTIRQ> \t\t\t\t\texpire_timers() \t\t\t\t\tWARN_ON_ONCE(!fn) // hit \t\t\t\t\t... lock_timer_base() // Now timer will detach if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base()  The problem is that timer_shutdown_sync() clears the timer function regardless of whether the timer is currently running. This can leave a pending timer with a NULL function pointer, which triggers the WARN_ON_ONCE(!fn) check in expire_timers().  Fix this by only clearing the timer function when actually detaching the timer. If the timer is running, leave the function pointer intact, which is safe because the timer will be properly detached when it finishes running.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-16 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38201",
                        "url": "https://ubuntu.com/security/CVE-2025-38201",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX  Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset.  Similar to:    b541ba7d1f5a (\"netfilter: conntrack: clamp maximum hashtable size to INT_MAX\")",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-07-04 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23198",
                        "url": "https://ubuntu.com/security/CVE-2026-23198",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: Don't clobber irqfd routing type when deassigning irqfd  When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI.  Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information.  As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone.  As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace).  As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list).  And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information.  As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd.  Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity():    BUG: kernel NULL pointer dereference, address: 0000000000000018   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0   Oops: Oops: 0000 [#1] SMP   CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--5dddc257e6b2-irqfd #31 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:amd_iommu_update_ga+0x19/0xe0   Call Trace:    <TASK>    avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd]    __avic_vcpu_load+0xf4/0x130 [kvm_amd]    kvm_arch_vcpu_load+0x89/0x210 [kvm]    vcpu_load+0x30/0x40 [kvm]    kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm]    kvm_vcpu_ioctl+0x571/0x6a0 [kvm]    __se_sys_ioctl+0x6d/0xb0    do_syscall_64+0x6f/0x9d0    entry_SYSCALL_64_after_hwframe+0x4b/0x53   RIP: 0033:0x46893b     </TASK>   ---[ end trace 0000000000000000 ]---  If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment.    list_add corruption. next->prev should be prev (ffff8d474d5cd588),                        but was 0000000000000000. (next=ffff8d8658f86530).   ------------[ cut here ]------------   kernel BUG at lib/list_debug.c:31!   Oops: invalid opcode: 0000 [#1] SMP   CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--f19dc4d680ba-irqfd #28 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:__list_add_valid_or_report+0x97/0xc0   Call Trace:    <TASK>    avic_pi_update_irte+0x28e/0x2b0 [kvm_amd]    kvm_pi_update_irte+0xbf/0x190 [kvm]    kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm]    irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23272",
                        "url": "https://ubuntu.com/security/CVE-2026-23272",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: unconditionally bump set->nelems before insertion  In case that the set is full, a new element gets published then removed without waiting for the RCU grace period, while RCU reader can be walking over it already.  To address this issue, add the element transaction even if set is full, but toggle the set_full flag to report -ENFILE so the abort path safely unwinds the set to its previous state.  As for element updates, decrement set->nelems to restore it.  A simpler fix is to call synchronize_rcu() in the error path. However, with a large batch adding elements to already maxed-out set, this could cause noticeable slowdown of such batches.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-20 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31418",
                        "url": "https://ubuntu.com/security/CVE-2026-31418",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ipset: drop logically empty buckets in mtype_del  mtype_del() counts empty slots below n->pos in k, but it only drops the bucket when both n->pos and k are zero. This misses buckets whose live entries have all been removed while n->pos still points past deleted slots.  Treat a bucket as empty when all positions below n->pos are unused and release it directly instead of shrinking it further.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23278",
                        "url": "https://ubuntu.com/security/CVE-2026-23278",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: always walk all pending catchall elements  During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch.  If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate.  Otherwise, we get:  WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404  RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables]  [..]  __nft_set_elem_destroy+0x106/0x380 [nf_tables]  nf_tables_abort_release+0x348/0x8d0 [nf_tables]  nf_tables_abort+0xcf2/0x3ac0 [nf_tables]  nfnetlink_rcv_batch+0x9c9/0x20e0 [..]",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-20 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46300",
                        "url": "https://ubuntu.com/security/CVE-2026-46300",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: skbuff: preserve shared-frag marker during coalescing  skb_try_coalesce() can attach paged frags from @from to @to.  If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.  That breaks the invariant relied on by later in-place writers.  In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data().  If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags.  Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags.  The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-23 12:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46333",
                        "url": "https://ubuntu.com/security/CVE-2026-46333",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ptrace: slightly saner 'get_dumpable()' logic  The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm.  And almost all users do in fact use it only for the case where the task has a mm pointer.  But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for threads that no longer have a VM (and maybe never did, like most kernel threads).  It's not what this flag was designed for, but it is what it is.  The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional \"drop capabilities\" model doesn't make any difference for this all.  Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached \"last dumpability\" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-15 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43500",
                        "url": "https://ubuntu.com/security/CVE-2026-43500",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present  The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true.  An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec().  Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true.  This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO).  The OOM/trace handling already in place is reused.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-11 08:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43284",
                        "url": "https://ubuntu.com/security/CVE-2026-43284",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  xfrm: esp: avoid in-place decrypt on shared skb frags  MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs.  That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb.  Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path.  This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb->data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 08:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31419",
                        "url": "https://ubuntu.com/security/CVE-2026-31419",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: bonding: fix use-after-free in bond_xmit_broadcast()  bond_xmit_broadcast() reuses the original skb for the last slave (determined by bond_is_last_slave()) and clones it for others. Concurrent slave enslave/release can mutate the slave list during RCU-protected iteration, changing which slave is \"last\" mid-loop. This causes the original skb to be double-consumed (double-freed).  Replace the racy bond_is_last_slave() check with a simple index comparison (i + 1 == slaves_count) against the pre-snapshot slave count taken via READ_ONCE() before the loop.  This preserves the zero-copy optimization for the last slave while making the \"last\" determination stable against concurrent list mutations.  The UAF can trigger the following crash:  ================================================================== BUG: KASAN: slab-use-after-free in skb_clone Read of size 8 at addr ffff888100ef8d40 by task exploit/147  CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY Call Trace:  <TASK>  dump_stack_lvl (lib/dump_stack.c:123)  print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)  kasan_report (mm/kasan/report.c:597)  skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)  bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)  bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)  dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)  __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)  ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)  ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)  ip6_output (net/ipv6/ip6_output.c:250)  ip6_send_skb (net/ipv6/ip6_output.c:1985)  udp_v6_send_skb (net/ipv6/udp.c:1442)  udpv6_sendmsg (net/ipv6/udp.c:1733)  __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)  __x64_sys_sendto (net/socket.c:2209)  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)  </TASK>  Allocated by task 147:  Freed by task 147:  The buggy address belongs to the object at ffff888100ef8c80  which belongs to the cache skbuff_head_cache of size 224 The buggy address is located 192 bytes inside of  freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)  Memory state around the buggy address:  ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc  ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc                                                     ^  ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb  ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31431",
                        "url": "https://ubuntu.com/security/CVE-2026-31431",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: algif_aead - Revert to operating out-of-place  This mostly reverts commit 72548b093ee3 except for the copying of the associated data.  There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings.  Get rid of all the complexity added for in-place operation and just copy the AD directly.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-22 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31533",
                        "url": "https://ubuntu.com/security/CVE-2026-31533",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption  The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 (\"net: tls: handle backlogging of crypto requests\"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry.  When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist.  The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record.  Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-23 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31504",
                        "url": "https://ubuntu.com/security/CVE-2026-31504",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: fix fanout UAF in packet_release() via NETDEV_UP race  `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.  The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.  This bug was found following an additional audit with Claude Code based on CVE-2025-38617.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-22 14:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2157253,
                    1786013,
                    2154219,
                    2153556,
                    2150730,
                    2149767,
                    2149767,
                    2149872,
                    2141536,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2153962
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-45988",
                                "url": "https://ubuntu.com/security/CVE-2026-45988",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Fix re-decryption of RESPONSE packets  If a RESPONSE packet gets a temporary failure during processing, it may end up in a partially decrypted state - and then get requeued for a retry.  Fix this by just discarding the packet; we will send another CHALLENGE packet and thereby elicit a further response.  Similarly, discard an incoming CHALLENGE packet if we get an error whilst generating a RESPONSE; the server will send another CHALLENGE.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-27 14:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46195",
                                "url": "https://ubuntu.com/security/CVE-2026-46195",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: validate dacloffset before building DACL pointers  parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor.  On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths.  Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46135",
                                "url": "https://ubuntu.com/security/CVE-2026-46135",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: fix race between ICReq handling and queue teardown  nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown.  If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock.  If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue.  The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference.  Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started.  Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31402",
                                "url": "https://ubuntu.com/security/CVE-2026-31402",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nfsd: fix heap overflow in NFSv4.0 LOCK replay cache  The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT).  When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory.  This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial.  We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large.  Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43071",
                                "url": "https://ubuntu.com/security/CVE-2026-43071",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dcache: Limit the minimal number of bucket to two  There is an OOB read problem on dentry_hashtable when user sets 'dhash_entries=1':   BUG: unable to handle page fault for address: ffff888b30b774b0   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   Oops: Oops: 0000 [#1] SMP PTI   RIP: 0010:__d_lookup+0x56/0x120    Call Trace:     d_lookup.cold+0x16/0x5d     lookup_dcache+0x27/0xf0     lookup_one_qstr_excl+0x2a/0x180     start_dirop+0x55/0xa0     simple_start_creating+0x8d/0xa0     debugfs_start_creating+0x8c/0x180     debugfs_create_dir+0x1d/0x1c0     pinctrl_init+0x6d/0x140     do_one_initcall+0x6d/0x3d0     kernel_init_freeable+0x39f/0x460     kernel_init+0x2a/0x260  There will be only one bucket in dentry_hashtable when dhash_entries is set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then, following process will access more than one buckets(which memory region is not allocated) in dentry_hashtable:  d_lookup   b = d_hash(hash)     dentry_hashtable + ((u32)hashlen >> d_hash_shift)     // The C standard defines the behavior of right shift amounts     // exceeding the bit width of the operand as undefined. The     // result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',     // so 'b' will point to an unallocated memory region.   hlist_bl_for_each_entry_rcu(b)    hlist_bl_first_rcu(head)     h->first  // read OOB!  Fix it by limiting the minimal number of dentry_hashtable bucket to two, so that 'd_hash_shift' won't exceeds the bit width of type u32.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-05-05 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46119",
                                "url": "https://ubuntu.com/security/CVE-2026-46119",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix slab-out-of-bounds access in auth message processing  If a (potentially corrupted) message of type CEPH_MSG_AUTH_REPLY contains a positive value in its result field, it is treated as an error code by ceph_handle_auth_reply() and returned to handle_auth_reply(). Thereafter, an attempt is made to send the preallocated message of type CEPH_MSG_AUTH, where the returned value is interpreted as the size of the front segment to send. If the result value in the message is greater than the size of the memory buffer allocated for the front segment, an out-of-bounds access occurs, and the content of the memory region beyond this buffer is sent out.  This patch fixes the issue by treating only negative values in the result field as errors. Positive values are therefore treated as success in the same way as a zero value. Additionally, a BUG_ON is added to __send_prepared_auth_request() comparing the len parameter to front_alloc_len to prevent sending the message if it exceeds the bounds of the allocation and to make it easier to catch any logic flaws leading to this.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43501",
                                "url": "https://ubuntu.com/security/CVE-2026-43501",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: rpl: reserve mac_len headroom when recompressed SRH grows  ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps the next segment into ipv6_hdr->daddr, recompresses, then pulls the old header and pushes the new one plus the IPv6 header back.  The recompressed header can be larger than the received one when the swap reduces the common-prefix length the segments share with daddr (CmprI=0, CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).  pskb_expand_head() was gated on segments_left == 0, so on earlier segments the push consumed unchecked headroom.  Once skb_push() leaves fewer than skb->mac_len bytes in front of data, skb_mac_header_rebuild()'s call to:  \tskb_set_mac_header(skb, -skb->mac_len);  will store (data - head) - mac_len into the u16 mac_header field, which wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB past skb->head.  A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.  Fix this by expanding the head whenever the remaining room is less than the push size plus mac_len, and request that much extra so the rebuilt MAC header fits afterwards.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-21 13:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46043",
                                "url": "https://ubuntu.com/security/CVE-2026-46043",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv  rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used.  However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen:    payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)                  - RXE_ICRC_SIZE  This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users.  Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-27 14:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43493",
                                "url": "https://ubuntu.com/security/CVE-2026-43493",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: pcrypt - Fix handling of MAY_BACKLOG requests  MAY_BACKLOG requests can return EBUSY.  Handle them by checking for that value and filtering out EINPROGRESS notifications.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-19 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31637",
                                "url": "https://ubuntu.com/security/CVE-2026-31637",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: reject undecryptable rxkad response tickets  rxkad_decrypt_ticket() decrypts the RXKAD response ticket and then parses the buffer as plaintext without checking whether crypto_skcipher_decrypt() succeeded.  A malformed RESPONSE can therefore use a non-block-aligned ticket length, make the decrypt operation fail, and still drive the ticket parser with attacker-controlled bytes.  Check the decrypt result and abort the connection with RXKADBADTICKET when ticket decryption fails.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31657",
                                "url": "https://ubuntu.com/security/CVE-2026-31657",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: hold claim backbone gateways by reference  batadv_bla_add_claim() can replace claim->backbone_gw and drop the old gateway's last reference while readers still follow the pointer.  The netlink claim dump path dereferences claim->backbone_gw->orig and takes claim->backbone_gw->crc_lock without pinning the underlying backbone gateway. batadv_bla_check_claim() still has the same naked pointer access pattern.  Reuse batadv_bla_claim_get_backbone_gw() in both readers so they operate on a stable gateway reference until the read-side work is complete. This keeps the dump and claim-check paths aligned with the lifetime rules introduced for the other BLA claim readers.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31685",
                                "url": "https://ubuntu.com/security/CVE-2026-31685",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ip6t_eui64: reject invalid MAC header for all packets  `eui64_mt6()` derives a modified EUI-64 from the Ethernet source address and compares it with the low 64 bits of the IPv6 source address.  The existing guard only rejects an invalid MAC header when `par->fragoff != 0`. For packets with `par->fragoff == 0`, `eui64_mt6()` can still reach `eth_hdr(skb)` even when the MAC header is not valid.  Fix this by removing the `par->fragoff != 0` condition so that packets with an invalid MAC header are rejected before accessing `eth_hdr(skb)`.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-25 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43117",
                                "url": "https://ubuntu.com/security/CVE-2026-43117",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: tracepoints: get correct superblock from dentry in event btrfs_sync_file()  If overlay is used on top of btrfs, dentry->d_sb translates to overlay's super block and fsid assignment will lead to a crash.  Use file_inode(file)->i_sb to always get btrfs_sb.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-06 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43114",
                                "url": "https://ubuntu.com/security/CVE-2026-43114",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry  New test case fails unexpectedly when avx2 matching functions are used.  The test first loads a ranomly generated pipapo set with 'ipv4 . port' key, i.e.  nft -f foo.  This works.  Then, it reloads the set after a flush: (echo flush set t s; cat foo) | nft -f -  This is expected to work, because its the same set after all and it was already loaded once.  But with avx2, this fails: nft reports a clashing element.  The reported clash is of following form:      We successfully re-inserted       a . b       c . d  Then we try to insert a . d  avx2 finds the already existing a . d, which (due to 'flush set') is marked as invalid in the new generation.  It skips the element and moves to next.  Due to incorrect masking, the skip-step finds the next matching element *only considering the first field*,  i.e. we return the already reinserted \"a . b\", even though the last field is different and the entry should not have been matched.  No such error is reported for the generic c implementation (no avx2) or when the last field has to use the 'nft_pipapo_avx2_lookup_slow' fallback.  Bisection points to 7711f4bb4b36 (\"netfilter: nft_set_pipapo: fix range overlap detection\") but that fix merely uncovers this bug.  Before this commit, the wrong element is returned, but erronously reported as a full, identical duplicate.  The root-cause is too early return in the avx2 match functions. When we process the last field, we should continue to process data until the entire input size has been consumed to make sure no stale bits remain in the map.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-06 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31478",
                                "url": "https://ubuntu.com/security/CVE-2026-31478",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()  After this commit (e2b76ab8b5c9 \"ksmbd: add support for read compound\"), response buffer management was changed to use dynamic iov array. In the new design, smb2_calc_max_out_buf_len() expects the second argument (hdr2_len) to be the offset of ->Buffer field in the response structure, not a hardcoded magic number. Fix the remaining call sites to use the correct offsetof() value.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-22 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31668",
                                "url": "https://ubuntu.com/security/CVE-2026-31668",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  seg6: separate dst_cache for input and output paths in seg6 lwtunnel  The seg6 lwtunnel uses a single dst_cache per encap route, shared between seg6_input_core() and seg6_output_core(). These two paths can perform the post-encap SID lookup in different routing contexts (e.g., ip rules matching on the ingress interface, or VRF table separation). Whichever path runs first populates the cache, and the other reuses it blindly, bypassing its own lookup.  Fix this by splitting the cache into cache_input and cache_output, so each path maintains its own cached dst independently.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31659",
                                "url": "https://ubuntu.com/security/CVE-2026-31659",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: reject oversized global TT response buffers  batadv_tt_prepare_tvlv_global_data() builds the allocation length for a global TT response in 16-bit temporaries. When a remote originator advertises a large enough global TT, the TT payload length plus the VLAN header offset can exceed 65535 and wrap before kmalloc().  The full-table response path still uses the original TT payload length when it fills tt_change, so the wrapped allocation is too small and batadv_tt_prepare_tvlv_global_data() writes past the end of the heap object before the later packet-size check runs.  Fix this by rejecting TT responses whose TVLV value length cannot fit in the 16-bit TVLV payload length field.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31649",
                                "url": "https://ubuntu.com/security/CVE-2026-31649",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: stmmac: fix integer underflow in chain mode  The jumbo_frm() chain-mode implementation unconditionally computes      len = nopaged_len - bmax;  where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB.  However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb->len (total length including page fragments):      is_jumbo = stmmac_is_jumbo_frm(priv, skb->len, enh_desc);  When a packet has a small linear portion (nopaged_len <= bmax) but a large total length due to page fragments (skb->len > bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx).  This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb->data + bmax * i pointers far beyond the skb buffer to dma_map_single().  On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware.  Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax).  Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31669",
                                "url": "https://ubuntu.com/security/CVE-2026-31669",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mptcp: fix slab-use-after-free in __inet_lookup_established  The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register().  However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently.  This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established.  Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43011",
                                "url": "https://ubuntu.com/security/CVE-2026-43011",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/x25: Fix potential double free of skb  When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain:  x25_queue_rx_frame returns 1     |     v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0     |     v x25_process_rx_frame returns queued=0     |     v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again  This would free the same skb twice. Looking at x25_backlog_rcv:  net/x25/x25_in.c:x25_backlog_rcv() {     ...     queued = x25_process_rx_frame(sk, skb);     ...     if (!queued)         kfree_skb(skb); }",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43037",
                                "url": "https://ubuntu.com/security/CVE-2026-43037",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ip6_tunnel: clear skb2->cb[] in ip4ip6_err()  Oskar Kjos reported the following problem.  ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).  To fix this we clear skb2->cb[], as suggested by Oskar Kjos.  Also add minimal IPv4 header validation (version == 4, ihl >= 5).",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43038",
                                "url": "https://ubuntu.com/security/CVE-2026-43038",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()  Sashiko AI-review observed:    In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet   where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2   and passed to icmp6_send(), it uses IP6CB(skb2).    IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso   offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm   at offset 18.    If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao   would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called   and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO).    This would scan the inner, attacker-controlled IPv6 packet starting at that   offset, potentially returning a fake TLV without checking if the remaining   packet length can hold the full 18-byte struct ipv6_destopt_hao.    Could mip6_addr_swap() then perform a 16-byte swap that extends past the end   of the packet data into skb_shared_info?    Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and   ip6ip6_err() to prevent this?  This patch implements the first suggestion.  I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31682",
                                "url": "https://ubuntu.com/security/CVE-2026-31682",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  bridge: br_nd_send: linearize skb before parsing ND options  br_nd_send() parses neighbour discovery options from ns->opt[] and assumes that these options are in the linear part of request.  Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns->opt[] in that case can access data past the linear buffer.  Linearize request before option parsing and derive ns from the linear network header.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-25 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23450",
                                "url": "https://ubuntu.com/security/CVE-2026-23450",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()  Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1].  smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release().  This leads to two issues:  1) NULL pointer dereference: sk_user_data is NULL when    accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the    smc_sock is freed before its fields (e.g., queued_smc_hs,    ori_af_ops) are accessed.  The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race):    CPU A (softirq)              CPU B (process ctx)    tcp_v4_rcv()     TCP_NEW_SYN_RECV:     sk = req->rsk_listener     sock_hold(sk)     /* No lock on listener */                                smc_close_active():                                  write_lock_bh(cb_lock)                                  sk_user_data = NULL                                  write_unlock_bh(cb_lock)                                  ...                                  smc_clcsock_release()                                  sock_put(smc->sk) x2                                    -> smc_sock freed!     tcp_check_req()       smc_tcp_syn_recv_sock():         smc = user_data(sk)           -> NULL or dangling         smc->queued_smc_hs           -> crash!  Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed.  Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight.  - Set SOCK_RCU_FREE on the SMC listen socket so that   smc_sock freeing is deferred until after the RCU grace   period. This guarantees the memory is still valid when   accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the   smc_sock. If the refcount has already reached zero (close   path completed), it returns false and we bail out safely.  Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected.  Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied.  [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23428",
                                "url": "https://ubuntu.com/security/CVE-2026-23428",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free of share_conf in compound request  smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely.  If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf.  KASAN report:  [    4.144653] ================================================================== [    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [    4.145772] [    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [    4.145875] Workqueue: ksmbd-io handle_ksmbd_work [    4.145888] Call Trace: [    4.145892]  <TASK> [    4.145894]  dump_stack_lvl+0x64/0x80 [    4.145910]  print_report+0xce/0x660 [    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [    4.145928]  ? smb2_write+0xc74/0xe70 [    4.145931]  kasan_report+0xce/0x100 [    4.145934]  ? smb2_write+0xc74/0xe70 [    4.145937]  smb2_write+0xc74/0xe70 [    4.145939]  ? __pfx_smb2_write+0x10/0x10 [    4.145942]  ? _raw_spin_unlock+0xe/0x30 [    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0 [    4.145948]  ? smb2_tree_disconnect+0x31c/0x480 [    4.145951]  handle_ksmbd_work+0x40f/0x1080 [    4.145953]  process_one_work+0x5fa/0xef0 [    4.145962]  ? assign_work+0x122/0x3e0 [    4.145964]  worker_thread+0x54b/0xf70 [    4.145967]  ? __pfx_worker_thread+0x10/0x10 [    4.145970]  kthread+0x346/0x470 [    4.145976]  ? recalc_sigpending+0x19b/0x230 [    4.145980]  ? __pfx_kthread+0x10/0x10 [    4.145984]  ret_from_fork+0x4fb/0x6c0 [    4.145992]  ? __pfx_ret_from_fork+0x10/0x10 [    4.145995]  ? __switch_to+0x36c/0xbe0 [    4.145999]  ? __pfx_kthread+0x10/0x10 [    4.146003]  ret_from_fork_asm+0x1a/0x30 [    4.146013]  </TASK> [    4.146014] [    4.149858] Allocated by task 44: [    4.149953]  kasan_save_stack+0x33/0x60 [    4.150061]  kasan_save_track+0x14/0x30 [    4.150169]  __kasan_kmalloc+0x8f/0xa0 [    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0 [    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600 [    4.150529]  smb2_tree_connect+0x2e6/0x1000 [    4.150645]  handle_ksmbd_work+0x40f/0x1080 [    4.150761]  process_one_work+0x5fa/0xef0 [    4.150873]  worker_thread+0x54b/0xf70 [    4.150978]  kthread+0x346/0x470 [    4.151071]  ret_from_fork+0x4fb/0x6c0 [    4.151176]  ret_from_fork_asm+0x1a/0x30 [    4.151286] [    4.151332] Freed by task 44: [    4.151418]  kasan_save_stack+0x33/0x60 [    4.151526]  kasan_save_track+0x14/0x30 [    4.151634]  kasan_save_free_info+0x3b/0x60 [    4.151751]  __kasan_slab_free+0x43/0x70 [    4.151861]  kfree+0x1ca/0x430 [    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190 [    4.152088]  smb2_tree_disconnect+0x1cd/0x480 [    4.152211]  handle_ksmbd_work+0x40f/0x1080 [    4.152326]  process_one_work+0x5fa/0xef0 [    4.152438]  worker_thread+0x54b/0xf70 [    4.152545]  kthread+0x346/0x470 [    4.152638]  ret_from_fork+0x4fb/0x6c0 [    4.152743]  ret_from_fork_asm+0x1a/0x30 [    4.152853] [    4.152900] The buggy address belongs to the object at ffff88810430c180 [    4.152900]  which belongs to the cache kmalloc-96 of size 96 [    4.153226] The buggy address is located 20 bytes inside of [    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [    4.153549] [    4.153596] The buggy address belongs to the physical page: [    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [    4.154000] flags: 0x ---truncated---",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23455",
                                "url": "https://ubuntu.com/security/CVE-2026-23455",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()  In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read.  Add a check to ensure len is positive after the decrement.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43186",
                                "url": "https://ubuntu.com/security/CVE-2026-43186",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()  On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic.  Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it:    - in ioam6_iptunnel.c (send path, existing validation) to replace     the open-coded computation;   - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose     nodelen is inconsistent with the type field, before any data is     written.  Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-06 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43185",
                                "url": "https://ubuntu.com/security/CVE-2026-43185",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()  smb_direct_prepare_negotiation() casts an unsigned __u32 value from sp->max_recv_size and req->preferred_send_size to a signed int before computing min_t(int, ...). A maliciously provided preferred_send_size of 0x80000000 will return as smaller than max_recv_size, and then be used to set the maximum allowed alowed receive size for the next message.  By sending a second message with a large value (>1420 bytes) the attacker can then achieve a heap buffer overflow.  This fix replaces min_t(int, ...) with min_t(u32)",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-06 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43341",
                                "url": "https://ubuntu.com/security/CVE-2026-43341",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/ipv6: ioam6: prevent schema length wraparound in trace fill  ioam6_fill_trace_data() stores the schema contribution to the trace length in a u8. With bit 22 enabled and the largest schema payload, sclen becomes 1 + 1020 / 4, wraps from 256 to 0, and bypasses the remaining-space check. __ioam6_fill_trace_data() then positions the write cursor without reserving the schema area but still copies the 4-byte schema header and the full schema payload, overrunning the trace buffer.  Keep sclen in an unsigned int so the remaining-space check and the write cursor calculation both see the full schema length.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31607",
                                "url": "https://ubuntu.com/security/CVE-2026-31607",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  usbip: validate number_of_packets in usbip_pack_ret_submit()  When a USB/IP client receives a RET_SUBMIT response, usbip_pack_ret_submit() unconditionally overwrites urb->number_of_packets from the network PDU. This value is subsequently used as the loop bound in usbip_recv_iso() and usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible array whose size was fixed at URB allocation time based on the *original* number_of_packets from the CMD_SUBMIT.  A malicious USB/IP server can set number_of_packets in the response to a value larger than what was originally submitted, causing a heap out-of-bounds write when usbip_recv_iso() writes to urb->iso_frame_desc[i] beyond the allocated region.  KASAN confirmed this with kernel 7.0.0-rc5:    BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640   Write of size 4 at addr ffff888106351d40 by task vhci_rx/69    The buggy address is located 0 bytes to the right of    allocated 320-byte region [ffff888106351c00, ffff888106351d40)  The server side (stub_rx.c) and gadget side (vudc_rx.c) already validate number_of_packets in the CMD_SUBMIT path since commits c6688ef9f297 (\"usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input\") and b78d830f0049 (\"usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input\"). The server side validates against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point. On the client side we have the original URB, so we can use the tighter bound: the response must not exceed the original number_of_packets.  This mirrors the existing validation of actual_length against transfer_buffer_length in usbip_recv_xbuff(), which checks the response value against the original allocation size.  Kelvin Mbogo's series (\"usb: usbip: fix integer overflow in usbip_recv_iso()\", v2) hardens the receive-side functions themselves; this patch complements that work by catching the bad value at its source -- in usbip_pack_ret_submit() before the overwrite -- and using the tighter per-URB allocation bound rather than the global USBIP_MAX_ISO_PACKETS limit.  Fix this by checking rpdu->number_of_packets against urb->number_of_packets in usbip_pack_ret_submit() before the overwrite. On violation, clamp to zero so that usbip_recv_iso() and usbip_pad_iso() safely return early.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43383",
                                "url": "https://ubuntu.com/security/CVE-2026-43383",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tcp-md5: Fix MAC comparison to be constant-time  To prevent timing attacks, MACs need to be compared in constant time.  Use the appropriate helper function for this.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-68263",
                                "url": "https://ubuntu.com/security/CVE-2025-68263",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: ipc: fix use-after-free in ipc_msg_send_request  ipc_msg_send_request() waits for a generic netlink reply using an ipc_msg_table_entry on the stack. The generic netlink handler (handle_generic_event()/handle_response()) fills entry->response under ipc_msg_table_lock, but ipc_msg_send_request() used to validate and free entry->response without holding the same lock.  Under high concurrency this allows a race where handle_response() is copying data into entry->response while ipc_msg_send_request() has just freed it, leading to a slab-use-after-free reported by KASAN in handle_generic_event():    BUG: KASAN: slab-use-after-free in handle_generic_event+0x3c4/0x5f0 [ksmbd]   Write of size 12 at addr ffff888198ee6e20 by task pool/109349   ...   Freed by task:     kvfree     ipc_msg_send_request [ksmbd]     ksmbd_rpc_open -> ksmbd_session_rpc_open [ksmbd]  Fix by: - Taking ipc_msg_table_lock in ipc_msg_send_request() while validating   entry->response, freeing it when invalid, and removing the entry from   ipc_msg_table. - Returning the final entry->response pointer to the caller only after   the hash entry is removed under the lock. - Returning NULL in the error path, preserving the original API   semantics.  This makes all accesses to entry->response consistent with handle_response(), which already updates and fills the response buffer under ipc_msg_table_lock, and closes the race that allowed the UAF.",
                                "cve_priority": "critical",
                                "cve_public_date": "2025-12-16 15:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46243",
                                "url": "https://ubuntu.com/security/CVE-2026-46243",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: reject userspace cifs.spnego descriptions  cifs.spnego key descriptions contain authority-bearing fields such as pid, uid, creduid, and upcall_target that cifs.upcall treats as kernel-originating inputs. However, userspace can also create keys of this type through request_key(2) or add_key(2), allowing those fields to be supplied without CIFS origin.  Only accept cifs.spnego descriptions while CIFS is using its private spnego_cred to request the key.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-01 17:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43414",
                                "url": "https://ubuntu.com/security/CVE-2026-43414",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: qla2xxx: Completely fix fcport double free  In qla24xx_els_dcmd_iocb() sp->free is set to qla2x00_els_dcmd_sp_free(). When an error happens, this function is called by qla2x00_sp_release(), when kref_put() releases the first and the last reference.  qla2x00_els_dcmd_sp_free() frees fcport by calling qla2x00_free_fcport(). Doing it one more time after kref_put() is a bad idea.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43407",
                                "url": "https://ubuntu.com/security/CVE-2026-43407",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()  This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation.  This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length.  Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length.  BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262  CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace:  <TASK>  dump_stack_lvl+0x76/0xa0  print_report+0xd1/0x620  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? kasan_complete_mode_report_info+0x72/0x210  kasan_report+0xe7/0x130  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  __asan_report_load_n_noabort+0xf/0x20  ceph_handle_auth_reply+0x642/0x7a0 [libceph]  mon_dispatch+0x973/0x23d0 [libceph]  ? apparmor_socket_recvmsg+0x6b/0xa0  ? __pfx_mon_dispatch+0x10/0x10 [libceph]  ? __kasan_check_write+0x14/0x30i  ? mutex_unlock+0x7f/0xd0  ? __pfx_mutex_unlock+0x10/0x10  ? __pfx_do_recvmsg+0x10/0x10 [libceph]  ceph_con_process_message+0x1f1/0x650 [libceph]  process_message+0x1e/0x450 [libceph]  ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]  ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph]  ? save_fpregs_to_fpstate+0xb0/0x230  ? raw_spin_rq_unlock+0x17/0xa0  ? finish_task_switch.isra.0+0x13b/0x760  ? __switch_to+0x385/0xda0  ? __kasan_check_write+0x14/0x30  ? mutex_lock+0x8d/0xe0  ? __pfx_mutex_lock+0x10/0x10  ceph_con_workfn+0x248/0x10c0 [libceph]  process_one_work+0x629/0xf80  ? __kasan_check_write+0x14/0x30  worker_thread+0x87f/0x1570  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? __pfx_try_to_wake_up+0x10/0x10  ? kasan_print_address_stack_frame+0x1f7/0x280  ? __pfx_worker_thread+0x10/0x10  kthread+0x396/0x830  ? __pfx__raw_spin_lock_irq+0x10/0x10  ? __pfx_kthread+0x10/0x10  ? __kasan_check_write+0x14/0x30  ? recalc_sigpending+0x180/0x210  ? __pfx_kthread+0x10/0x10  ret_from_fork+0x3f7/0x610  ? __pfx_ret_from_fork+0x10/0x10  ? __switch_to+0x385/0xda0  ? __pfx_kthread+0x10/0x10  ret_from_fork_asm+0x1a/0x30  </TASK>  [ idryomov: replace if statements with ceph_decode_need() for   payload_len and result_msg_len ]",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43406",
                                "url": "https://ubuntu.com/security/CVE-2026-43406",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: prevent potential out-of-bounds reads in process_message_header()  If the message frame is (maliciously) corrupted in a way that the length of the control segment ends up being less than the size of the message header or a different frame is made to look like a message frame, out-of-bounds reads may ensue in process_message_header().  Perform an explicit bounds check before decoding the message header.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43304",
                                "url": "https://ubuntu.com/security/CVE-2026-43304",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: define and enforce CEPH_MAX_KEY_LEN  When decoding the key, verify that the key material would fit into a fixed-size buffer in process_auth_done() and generally has a sane length.  The new CEPH_MAX_KEY_LEN check replaces the existing check for a key with no key material which is a) not universal since CEPH_CRYPTO_NONE has to be excluded and b) doesn't provide much value since a smaller than needed key is just as invalid as no key -- this has to be handled elsewhere anyway.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-08 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37924",
                                "url": "https://ubuntu.com/security/CVE-2025-37924",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free in kerberos authentication  Setting sess->user = NULL was introduced to fix the dangling pointer created by ksmbd_free_user. However, it is possible another thread could be operating on the session and make use of sess->user after it has been passed to ksmbd_free_user but before sess->user is set to NULL.",
                                "cve_priority": "high",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37778",
                                "url": "https://ubuntu.com/security/CVE-2025-37778",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: Fix dangling pointer in krb_authenticate  krb_authenticate frees sess->user and does not set the pointer to NULL. It calls ksmbd_krb5_authenticate to reinitialise sess->user but that function may return without doing so. If that happens then smb2_sess_setup, which calls krb_authenticate, will be accessing free'd memory when it later uses sess->user.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-01 14:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux: 5.15.0-185.195 -proposed tracker (LP: #2157253)",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] update annotations scripts",
                            "    - [Packaging] resync retpoline extraction",
                            "",
                            "  * CVE-2026-45988",
                            "    - rxrpc: Fix re-decryption of RESPONSE packets",
                            "",
                            "  * CVE-2026-46195",
                            "    - smb: client: validate dacloffset before building DACL pointers",
                            "",
                            "  * CVE-2026-46135",
                            "    - nvmet-tcp: fix race between ICReq handling and queue teardown",
                            "",
                            "  * CVE-2026-31402",
                            "    - nfsd: fix heap overflow in NFSv4.0 LOCK replay cache",
                            "",
                            "  * CVE-2026-43071",
                            "    - dcache: Limit the minimal number of bucket to two",
                            "",
                            "  * CVE-2026-46119",
                            "    - libceph: Fix slab-out-of-bounds access in auth message processing",
                            "",
                            "  * CVE-2026-43501",
                            "    - ipv6: rpl: reserve mac_len headroom when recompressed SRH grows",
                            "",
                            "  * CVE-2026-46043",
                            "    - RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv",
                            "",
                            "  * CVE-2026-43493",
                            "    - crypto: pcrypt - Fix handling of MAY_BACKLOG requests",
                            "",
                            "  * CVE-2026-31637",
                            "    - rxrpc: reject undecryptable rxkad response tickets",
                            "",
                            "  * CVE-2026-31657",
                            "    - batman-adv: hold claim backbone gateways by reference",
                            "",
                            "  * CVE-2026-31685",
                            "    - netfilter: ip6t_eui64: reject invalid MAC header for all packets",
                            "",
                            "  * CVE-2026-43117",
                            "    - btrfs: tracepoints: get correct superblock from dentry in event",
                            "      btrfs_sync_file()",
                            "",
                            "  * CVE-2026-43114",
                            "    - netfilter: nft_set_pipapo_avx2: don't return non-matching entry on",
                            "      expiry",
                            "",
                            "  * CVE-2026-31478",
                            "    - ksmbd: replace hardcoded hdr2_len with offsetof() in",
                            "      smb2_calc_max_out_buf_len()",
                            "",
                            "  * CVE-2026-31668",
                            "    - seg6: separate dst_cache for input and output paths in seg6 lwtunnel",
                            "",
                            "  * CVE-2026-31659",
                            "    - batman-adv: reject oversized global TT response buffers",
                            "",
                            "  * CVE-2026-31649",
                            "    - net: stmmac: fix integer underflow in chain mode",
                            "",
                            "  * CVE-2026-31669",
                            "    - mptcp: fix slab-use-after-free in __inet_lookup_established",
                            "",
                            "  * CVE-2026-43011",
                            "    - net/x25: Fix potential double free of skb",
                            "",
                            "  * CVE-2026-43037",
                            "    - ip6_tunnel: clear skb2->cb[] in ip4ip6_err()",
                            "",
                            "  * CVE-2026-43038",
                            "    - ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()",
                            "",
                            "  * CVE-2026-31682",
                            "    - bridge: br_nd_send: linearize skb before parsing ND options",
                            "",
                            "  * CVE-2026-23450",
                            "    - net/smc: Only save the original clcsock callback functions",
                            "    - net/smc: Fix slab-out-of-bounds issue in fallback",
                            "    - net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()",
                            "",
                            "  * CVE-2026-23428",
                            "    - ksmbd: fix use-after-free of share_conf in compound request",
                            "",
                            "  * CVE-2026-23455",
                            "    - netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()",
                            "",
                            "  * CVE-2026-43186",
                            "    - ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()",
                            "",
                            "  * CVE-2026-43185",
                            "    - ksmbd: fix signededness bug in smb_direct_prepare_negotiation()",
                            "",
                            "  * CVE-2026-43341",
                            "    - net/ipv6: ioam6: prevent schema length wraparound in trace fill",
                            "",
                            "  * CVE-2026-31607",
                            "    - usbip: validate number_of_packets in usbip_pack_ret_submit()",
                            "",
                            "  * CVE-2026-43383",
                            "    - net/tcp-md5: Fix MAC comparison to be constant-time",
                            "",
                            "  * CVE-2025-68263",
                            "    - ksmbd: ipc: fix use-after-free in ipc_msg_send_request",
                            "",
                            "  * CVE-2026-46243",
                            "    - smb: client: reject userspace cifs.spnego descriptions",
                            "",
                            "  * CVE-2026-43414",
                            "    - scsi: qla2xxx: Completely fix fcport double free",
                            "",
                            "  * CVE-2026-43407",
                            "    - libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()",
                            "",
                            "  * CVE-2026-43406",
                            "    - libceph: prevent potential out-of-bounds reads in",
                            "      process_message_header()",
                            "",
                            "  * CVE-2026-43304",
                            "    - libceph: define and enforce CEPH_MAX_KEY_LEN",
                            "",
                            "  * CVE-2025-37924",
                            "    - ksmbd: fix use-after-free in kerberos authentication",
                            "",
                            "  * CVE-2025-37778",
                            "    - ksmbd: Fix dangling pointer in krb_authenticate",
                            ""
                        ],
                        "package": "linux",
                        "version": "5.15.0-185.195",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2157253,
                            1786013
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 17:54:32 +0200"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2022-48816",
                                "url": "https://ubuntu.com/security/CVE-2022-48816",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  SUNRPC: lock against ->sock changing during sysfs read  ->sock can be set to NULL asynchronously unless ->recv_mutex is held. So it is important to hold that mutex.  Otherwise a sysfs read can trigger an oops. Commit 17f09d3f619a (\"SUNRPC: Check if the xprt is connected before handling sysfs reads\") appears to attempt to fix this problem, but it only narrows the race window.",
                                "cve_priority": "medium",
                                "cve_public_date": "2024-07-16 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23182",
                                "url": "https://ubuntu.com/security/CVE-2026-23182",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra: Fix a memory leak in tegra_slink_probe()  In tegra_slink_probe(), when platform_get_irq() fails, it directly returns from the function with an error code, which causes a memory leak.  Replace it with a goto label to ensure proper cleanup.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23202",
                                "url": "https://ubuntu.com/security/CVE-2026-23202",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer  The curr_xfer field is read by the IRQ handler without holding the lock to check if a transfer is in progress. When clearing curr_xfer in the combined sequence transfer loop, protect it with the spinlock to prevent a race with the interrupt handler.  Protect the curr_xfer clearing at the exit path of tegra_qspi_combined_seq_xfer() with the spinlock to prevent a race with the interrupt handler that reads this field.  Without this protection, the IRQ handler could read a partially updated curr_xfer value, leading to NULL pointer dereference or use-after-free.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71089",
                                "url": "https://ubuntu.com/security/CVE-2025-71089",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  iommu: disable SVA when CONFIG_X86 is set  Patch series \"Fix stale IOTLB entries for kernel address space\", v7.  This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA).  In an SVA context, an IOMMU can cache kernel page table entries.  When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries.  This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption.  This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused.   This patch (of 8):  In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables.  The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table.  Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries.  The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings.  This can cause the IOMMU's internal caches to retain stale entries for kernel VA.  Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated.  The IOMMU could misinterpret the new data as valid page table entries.  The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation.  This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables.  Currently, SVA contexts are unprivileged and cannot access kernel mappings.  However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out.  This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern.  Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-01-13 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2023-53673",
                                "url": "https://ubuntu.com/security/CVE-2023-53673",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  Bluetooth: hci_event: call disconnect callback before deleting conn  In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.  ISO, L2CAP and SCO connections refer to the hci_conn without hci_conn_get, so disconn_cfm must be called so they can clean up their conn, otherwise use-after-free occurs.  ISO: ========================================================== iso_sock_connect:880: sk 00000000eabd6557 iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073 hci_dev_put:1487: hci0 orig refcnt 17 __iso_chan_add:214: conn 00000000b6251073 iso_sock_clear_timer:117: sock 00000000eabd6557 state 3 ... hci_rx_work:4085: hci0 Event packet hci_event_packet:7601: hci0: event 0x0f hci_cmd_status_evt:4346: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3107: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560 hci_conn_unlink:1102: hci0: hcon 000000001696f1fd hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2 hci_chan_list_flush:2780: hcon 000000001696f1fd hci_dev_put:1487: hci0 orig refcnt 21 hci_dev_put:1487: hci0 orig refcnt 20 hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c ... <no iso_* activity on sk/conn> ... iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557 BUG: kernel NULL pointer dereference, address: 0000000000000668 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth ==========================================================  L2CAP: ================================================================== hci_cmd_status_evt:4359: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3085: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585 hci_conn_unlink:1102: hci0: hcon ffff88800c999000 hci_chan_list_flush:2780: hcon ffff88800c999000 hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280 ... BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth] Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175  CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace:  <TASK>  dump_stack_lvl+0x5b/0x90  print_report+0xcf/0x670  ? __virt_addr_valid+0xf8/0x180  ? hci_send_acl+0x2d/0x540 [bluetooth]  kasan_report+0xa8/0xe0  ? hci_send_acl+0x2d/0x540 [bluetooth]  hci_send_acl+0x2d/0x540 [bluetooth]  ? __pfx___lock_acquire+0x10/0x10  l2cap_chan_send+0x1fd/0x1300 [bluetooth]  ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]  ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]  ? lock_release+0x1d5/0x3c0  ? mark_held_locks+0x1a/0x90  l2cap_sock_sendmsg+0x100/0x170 [bluetooth]  sock_write_iter+0x275/0x280  ? __pfx_sock_write_iter+0x10/0x10  ? __pfx___lock_acquire+0x10/0x10  do_iter_readv_writev+0x176/0x220  ? __pfx_do_iter_readv_writev+0x10/0x10  ? find_held_lock+0x83/0xa0  ? selinux_file_permission+0x13e/0x210  do_iter_write+0xda/0x340  vfs_writev+0x1b4/0x400  ? __pfx_vfs_writev+0x10/0x10  ? __seccomp_filter+0x112/0x750  ? populate_seccomp_data+0x182/0x220  ? __fget_light+0xdf/0x100  ? do_writev+0x19d/0x210  do_writev+0x19d/0x210  ? __pfx_do_writev+0x10/0x10  ? mark_held_locks+0x1a/0x90  do_syscall_64+0x60/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  ? do_syscall_64+0x6c/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7ff45cb23e64 Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: ---truncated---",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-07 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23262",
                                "url": "https://ubuntu.com/security/CVE-2026-23262",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  gve: Fix stats report corruption on queue count change  The driver and the NIC share a region in memory for stats reporting. The NIC calculates its offset into this region based on the total size of the stats region and the size of the NIC's stats.  When the number of queues is changed, the driver's stats region is resized. If the queue count is increased, the NIC can write past the end of the allocated stats region, causing memory corruption. If the queue count is decreased, there is a gap between the driver and NIC stats, leading to incorrect stats reporting.  This change fixes the issue by allocating stats region with maximum size, and the offset calculation for NIC stats is changed to match with the calculation of the NIC.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40082",
                                "url": "https://ubuntu.com/security/CVE-2025-40082",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()  BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186 Read of size 2 at addr ffff8880289ef218 by task syz.6.248/14290  CPU: 0 UID: 0 PID: 14290 Comm: syz.6.248 Not tainted 6.16.4 #1 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:  <TASK>  __dump_stack lib/dump_stack.c:94 [inline]  dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120  print_address_description mm/kasan/report.c:378 [inline]  print_report+0xca/0x5f0 mm/kasan/report.c:482  kasan_report+0xca/0x100 mm/kasan/report.c:595  hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186  hfsplus_listxattr+0x5b6/0xbd0 fs/hfsplus/xattr.c:738  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe0e9fae16d Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fe0eae67f98 EFLAGS: 00000246 ORIG_RAX: 00000000000000c3 RAX: ffffffffffffffda RBX: 00007fe0ea205fa0 RCX: 00007fe0e9fae16d RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000200000000000 RBP: 00007fe0ea0480f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fe0ea206038 R14: 00007fe0ea205fa0 R15: 00007fe0eae48000  </TASK>  Allocated by task 14290:  kasan_save_stack+0x24/0x50 mm/kasan/common.c:47  kasan_save_track+0x14/0x30 mm/kasan/common.c:68  poison_kmalloc_redzone mm/kasan/common.c:377 [inline]  __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394  kasan_kmalloc include/linux/kasan.h:260 [inline]  __do_kmalloc_node mm/slub.c:4333 [inline]  __kmalloc_noprof+0x219/0x540 mm/slub.c:4345  kmalloc_noprof include/linux/slab.h:909 [inline]  hfsplus_find_init+0x95/0x1f0 fs/hfsplus/bfind.c:21  hfsplus_listxattr+0x331/0xbd0 fs/hfsplus/xattr.c:697  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  When hfsplus_uni2asc is called from hfsplus_listxattr, it actually passes in a struct hfsplus_attr_unistr*. The size of the corresponding structure is different from that of hfsplus_unistr, so the previous fix (94458781aee6) is insufficient. The pointer on the unicode buffer is still going beyond the allocated memory.  This patch introduces two warpper functions hfsplus_uni2asc_xattr_str and hfsplus_uni2asc_str to process two unicode buffers, struct hfsplus_attr_unistr* and struct hfsplus_unistr* respectively. When ustrlen value is bigger than the allocated memory size, the ustrlen value is limited to an safe size.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-28 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37822",
                                "url": "https://ubuntu.com/security/CVE-2025-37822",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: uprobes: Add missing fence.i after building the XOL buffer  The XOL (execute out-of-line) buffer is used to single-step the replaced instruction(s) for uprobes. The RISC-V port was missing a proper fence.i (i$ flushing) after constructing the XOL buffer, which can result in incorrect execution of stale/broken instructions.  This was found running the BPF selftests \"test_progs: uprobe_autoattach, attach_probe\" on the Spacemit K1/X60, where the uprobes tests randomly blew up.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-08 07:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23190",
                                "url": "https://ubuntu.com/security/CVE-2026-23190",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ASoC: amd: fix memory leak in acp3x pdm dma ops",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23112",
                                "url": "https://ubuntu.com/security/CVE-2026-23112",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec  nvmet_tcp_build_pdu_iovec() could walk past cmd->req.sg when a PDU length or offset exceeds sg_cnt and then use bogus sg->length/offset values, leading to _copy_to_iter() GPF/KASAN. Guard sg_idx, remaining entries, and sg->length/offset before building the bvec.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23111",
                                "url": "https://ubuntu.com/security/CVE-2026-23111",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23180",
                                "url": "https://ubuntu.com/security/CVE-2026-23180",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: add bounds check for if_id in IRQ handler  The IRQ handler extracts if_id from the upper 16 bits of the hardware status register and uses it to index into ethsw->ports[] without validation. Since if_id can be any 16-bit value (0-65535) but the ports array is only allocated with sw_attr.num_ifs elements, this can lead to an out-of-bounds read potentially.  Add a bounds check before accessing the array, consistent with the existing validation in dpaa2_switch_rx().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23256",
                                "url": "https://ubuntu.com/security/CVE-2026-23256",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Compile tested only. Issue found using code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23257",
                                "url": "https://ubuntu.com/security/CVE-2026-23257",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Also, decrement i in the devlink_alloc failure path to point to the last successfully allocated index.  Compile tested only. Issue found using code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23258",
                                "url": "https://ubuntu.com/security/CVE-2026-23258",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Initialize netdev pointer before queue setup  In setup_nic_devices(), the netdev is allocated using alloc_etherdev_mq(). However, the pointer to this structure is stored in oct->props[i].netdev only after the calls to netif_set_real_num_rx_queues() and netif_set_real_num_tx_queues().  If either of these functions fails, setup_nic_devices() returns an error without freeing the allocated netdev. Since oct->props[i].netdev is still NULL at this point, the cleanup function liquidio_destroy_nic_device() will fail to find and free the netdev, resulting in a memory leak.  Fix this by initializing oct->props[i].netdev before calling the queue setup functions. This ensures that the netdev is properly accessible for cleanup in case of errors.  Compile tested only. Issue found using a prototype static analysis tool and code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23206",
                                "url": "https://ubuntu.com/security/CVE-2026-23206",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero  The driver allocates arrays for ports, FDBs, and filter blocks using kcalloc() with ethsw->sw_attr.num_ifs as the element count. When the device reports zero interfaces (either due to hardware configuration or firmware issues), kcalloc(0, ...) returns ZERO_SIZE_PTR (0x10) instead of NULL.  Later in dpaa2_switch_probe(), the NAPI initialization unconditionally accesses ethsw->ports[0]->netdev, which attempts to dereference ZERO_SIZE_PTR (address 0x10), resulting in a kernel panic.  Add a check to ensure num_ifs is greater than zero after retrieving device attributes. This prevents the zero-sized allocations and subsequent invalid pointer dereference.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23176",
                                "url": "https://ubuntu.com/security/CVE-2026-23176",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  platform/x86: toshiba_haps: Fix memory leaks in add/remove routines  toshiba_haps_add() leaks the haps object allocated by it if it returns an error after allocating that object successfully.  toshiba_haps_remove() does not free the object pointed to by toshiba_haps before clearing that pointer, so it becomes unreachable allocated memory.  Address these memory leaks by using devm_kzalloc() for allocating the memory in question.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23216",
                                "url": "https://ubuntu.com/security/CVE-2026-23216",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()  In iscsit_dec_conn_usage_count(), the function calls complete() while holding the conn->conn_usage_lock. As soon as complete() is invoked, the waiter (such as iscsit_close_connection()) may wake up and proceed to free the iscsit_conn structure.  If the waiter frees the memory before the current thread reaches spin_unlock_bh(), it results in a KASAN slab-use-after-free as the function attempts to release a lock within the already-freed connection structure.  Fix this by releasing the spinlock before calling complete().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-18 15:18:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23193",
                                "url": "https://ubuntu.com/security/CVE-2026-23193",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()  In iscsit_dec_session_usage_count(), the function calls complete() while holding the sess->session_usage_lock. Similar to the connection usage count logic, the waiter signaled by complete() (e.g., in the session release path) may wake up and free the iscsit_session structure immediately.  This creates a race condition where the current thread may attempt to execute spin_unlock_bh() on a session structure that has already been deallocated, resulting in a KASAN slab-use-after-free.  To resolve this, release the session_usage_lock before calling complete() to ensure all dereferences of the sess pointer are finished before the waiter is allowed to proceed with deallocation.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71220",
                                "url": "https://ubuntu.com/security/CVE-2025-71220",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe()  When ksmbd_iov_pin_rsp() fails, we should call ksmbd_session_rpc_close().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71222",
                                "url": "https://ubuntu.com/security/CVE-2025-71222",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: wlcore: ensure skb headroom before skb_push  This avoids occasional skb_under_panic Oops from wl1271_tx_work. In this case, headroom is less than needed (typically 110 - 94 = 16 bytes).",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71224",
                                "url": "https://ubuntu.com/security/CVE-2025-71224",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined  ieee80211_ocb_rx_no_sta() assumes a valid channel context, which is only present after JOIN_OCB.  RX may run before JOIN_OCB is executed, in which case the OCB interface is not operational. Skip RX peer handling when the interface is not joined to avoid warnings in the RX path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-68214",
                                "url": "https://ubuntu.com/security/CVE-2025-68214",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  timers: Fix NULL function pointer race in timer_shutdown_sync()  There is a race condition between timer_shutdown_sync() and timer expiration that can lead to hitting a WARN_ON in expire_timers().  The issue occurs when timer_shutdown_sync() clears the timer function to NULL while the timer is still running on another CPU. The race scenario looks like this:  CPU0\t\t\t\t\tCPU1 \t\t\t\t\t<SOFTIRQ> \t\t\t\t\tlock_timer_base() \t\t\t\t\texpire_timers() \t\t\t\t\tbase->running_timer = timer; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t[call_timer_fn enter] \t\t\t\t\tmod_timer() \t\t\t\t\t... timer_shutdown_sync() lock_timer_base() // For now, will not detach the timer but only clear its function to NULL if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base() \t\t\t\t\t[call_timer_fn exit] \t\t\t\t\tlock_timer_base() \t\t\t\t\tbase->running_timer = NULL; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t... \t\t\t\t\t// Now timer is pending while its function set to NULL. \t\t\t\t\t// next timer trigger \t\t\t\t\t<SOFTIRQ> \t\t\t\t\texpire_timers() \t\t\t\t\tWARN_ON_ONCE(!fn) // hit \t\t\t\t\t... lock_timer_base() // Now timer will detach if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base()  The problem is that timer_shutdown_sync() clears the timer function regardless of whether the timer is currently running. This can leave a pending timer with a NULL function pointer, which triggers the WARN_ON_ONCE(!fn) check in expire_timers().  Fix this by only clearing the timer function when actually detaching the timer. If the timer is running, leave the function pointer intact, which is safe because the timer will be properly detached when it finishes running.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-16 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38201",
                                "url": "https://ubuntu.com/security/CVE-2025-38201",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX  Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset.  Similar to:    b541ba7d1f5a (\"netfilter: conntrack: clamp maximum hashtable size to INT_MAX\")",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-07-04 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23198",
                                "url": "https://ubuntu.com/security/CVE-2026-23198",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: Don't clobber irqfd routing type when deassigning irqfd  When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI.  Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information.  As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone.  As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace).  As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list).  And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information.  As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd.  Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity():    BUG: kernel NULL pointer dereference, address: 0000000000000018   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0   Oops: Oops: 0000 [#1] SMP   CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--5dddc257e6b2-irqfd #31 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:amd_iommu_update_ga+0x19/0xe0   Call Trace:    <TASK>    avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd]    __avic_vcpu_load+0xf4/0x130 [kvm_amd]    kvm_arch_vcpu_load+0x89/0x210 [kvm]    vcpu_load+0x30/0x40 [kvm]    kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm]    kvm_vcpu_ioctl+0x571/0x6a0 [kvm]    __se_sys_ioctl+0x6d/0xb0    do_syscall_64+0x6f/0x9d0    entry_SYSCALL_64_after_hwframe+0x4b/0x53   RIP: 0033:0x46893b     </TASK>   ---[ end trace 0000000000000000 ]---  If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment.    list_add corruption. next->prev should be prev (ffff8d474d5cd588),                        but was 0000000000000000. (next=ffff8d8658f86530).   ------------[ cut here ]------------   kernel BUG at lib/list_debug.c:31!   Oops: invalid opcode: 0000 [#1] SMP   CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--f19dc4d680ba-irqfd #28 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:__list_add_valid_or_report+0x97/0xc0   Call Trace:    <TASK>    avic_pi_update_irte+0x28e/0x2b0 [kvm_amd]    kvm_pi_update_irte+0xbf/0x190 [kvm]    kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm]    irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23272",
                                "url": "https://ubuntu.com/security/CVE-2026-23272",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: unconditionally bump set->nelems before insertion  In case that the set is full, a new element gets published then removed without waiting for the RCU grace period, while RCU reader can be walking over it already.  To address this issue, add the element transaction even if set is full, but toggle the set_full flag to report -ENFILE so the abort path safely unwinds the set to its previous state.  As for element updates, decrement set->nelems to restore it.  A simpler fix is to call synchronize_rcu() in the error path. However, with a large batch adding elements to already maxed-out set, this could cause noticeable slowdown of such batches.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-20 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31418",
                                "url": "https://ubuntu.com/security/CVE-2026-31418",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ipset: drop logically empty buckets in mtype_del  mtype_del() counts empty slots below n->pos in k, but it only drops the bucket when both n->pos and k are zero. This misses buckets whose live entries have all been removed while n->pos still points past deleted slots.  Treat a bucket as empty when all positions below n->pos are unused and release it directly instead of shrinking it further.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23278",
                                "url": "https://ubuntu.com/security/CVE-2026-23278",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: always walk all pending catchall elements  During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch.  If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate.  Otherwise, we get:  WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404  RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables]  [..]  __nft_set_elem_destroy+0x106/0x380 [nf_tables]  nf_tables_abort_release+0x348/0x8d0 [nf_tables]  nf_tables_abort+0xcf2/0x3ac0 [nf_tables]  nfnetlink_rcv_batch+0x9c9/0x20e0 [..]",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-20 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46300",
                                "url": "https://ubuntu.com/security/CVE-2026-46300",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: skbuff: preserve shared-frag marker during coalescing  skb_try_coalesce() can attach paged frags from @from to @to.  If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.  That breaks the invariant relied on by later in-place writers.  In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data().  If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags.  Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags.  The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-23 12:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46333",
                                "url": "https://ubuntu.com/security/CVE-2026-46333",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ptrace: slightly saner 'get_dumpable()' logic  The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm.  And almost all users do in fact use it only for the case where the task has a mm pointer.  But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for threads that no longer have a VM (and maybe never did, like most kernel threads).  It's not what this flag was designed for, but it is what it is.  The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional \"drop capabilities\" model doesn't make any difference for this all.  Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached \"last dumpability\" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-15 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43500",
                                "url": "https://ubuntu.com/security/CVE-2026-43500",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present  The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true.  An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec().  Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true.  This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO).  The OOM/trace handling already in place is reused.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-11 08:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43284",
                                "url": "https://ubuntu.com/security/CVE-2026-43284",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  xfrm: esp: avoid in-place decrypt on shared skb frags  MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs.  That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb.  Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path.  This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb->data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 08:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31419",
                                "url": "https://ubuntu.com/security/CVE-2026-31419",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: bonding: fix use-after-free in bond_xmit_broadcast()  bond_xmit_broadcast() reuses the original skb for the last slave (determined by bond_is_last_slave()) and clones it for others. Concurrent slave enslave/release can mutate the slave list during RCU-protected iteration, changing which slave is \"last\" mid-loop. This causes the original skb to be double-consumed (double-freed).  Replace the racy bond_is_last_slave() check with a simple index comparison (i + 1 == slaves_count) against the pre-snapshot slave count taken via READ_ONCE() before the loop.  This preserves the zero-copy optimization for the last slave while making the \"last\" determination stable against concurrent list mutations.  The UAF can trigger the following crash:  ================================================================== BUG: KASAN: slab-use-after-free in skb_clone Read of size 8 at addr ffff888100ef8d40 by task exploit/147  CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY Call Trace:  <TASK>  dump_stack_lvl (lib/dump_stack.c:123)  print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)  kasan_report (mm/kasan/report.c:597)  skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)  bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)  bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)  dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)  __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)  ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)  ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)  ip6_output (net/ipv6/ip6_output.c:250)  ip6_send_skb (net/ipv6/ip6_output.c:1985)  udp_v6_send_skb (net/ipv6/udp.c:1442)  udpv6_sendmsg (net/ipv6/udp.c:1733)  __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)  __x64_sys_sendto (net/socket.c:2209)  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)  </TASK>  Allocated by task 147:  Freed by task 147:  The buggy address belongs to the object at ffff888100ef8c80  which belongs to the cache skbuff_head_cache of size 224 The buggy address is located 192 bytes inside of  freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)  Memory state around the buggy address:  ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc  ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc                                                     ^  ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb  ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31431",
                                "url": "https://ubuntu.com/security/CVE-2026-31431",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: algif_aead - Revert to operating out-of-place  This mostly reverts commit 72548b093ee3 except for the copying of the associated data.  There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings.  Get rid of all the complexity added for in-place operation and just copy the AD directly.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-22 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31533",
                                "url": "https://ubuntu.com/security/CVE-2026-31533",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption  The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 (\"net: tls: handle backlogging of crypto requests\"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry.  When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist.  The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record.  Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-23 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31504",
                                "url": "https://ubuntu.com/security/CVE-2026-31504",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: fix fanout UAF in packet_release() via NETDEV_UP race  `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.  The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.  This bug was found following an additional audit with Claude Code based on CVE-2025-38617.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-22 14:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux: 5.15.0-184.194 -proposed tracker (LP: #2154219)",
                            "",
                            "  * Kernel regression (6.8.0-117.generic) (LP: #2153556)",
                            "    - net: bonding: update the slave array for broadcast mode",
                            "    - bonding: do not set usable_slaves for broadcast mode",
                            "",
                            "  * kernel null pointer BUG in 5.15 when disconnecting from cifs share",
                            "    (LP: #2150730)",
                            "    - SAUCE: cifs: fix null pointer dereference in find_ipc_from_server_path",
                            "",
                            "  * SUNRPC: System wide grep leads to NULL pointer deference in sysfs reads",
                            "    (LP: #2149767)",
                            "    - SUNRPC: Check if the xprt is connected before handling sysfs reads",
                            "    - SUNRPC: Do not dereference non-socket transports in sysfs",
                            "",
                            "  * SUNRPC: System wide grep leads to NULL pointer deference in sysfs reads",
                            "    (LP: #2149767) // CVE-2022-48816",
                            "    - SUNRPC: lock against ->sock changing during sysfs read",
                            "",
                            "  * iptables connlimit traffic loss (LP: #2149872)",
                            "    - netfilter: nf_conncount: fix tracking of connections from localhost",
                            "",
                            "  * Some powerpc test from ubuntu_kernel_selftests timeout with 45 seconds",
                            "    (LP: #2141536)",
                            "    - selftests/powerpc: Lower run time of count_stcx_fail test",
                            "    - selftests/powerpc: Give all tests 2 minutes timeout",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598)",
                            "    - x86/kfence: fix booting on 32bit non-PAE systems",
                            "    - platform/x86: intel_telemetry: Fix swapped arrays in PSS output",
                            "    - rbd: check for EOD after exclusive lock is ensured to be held",
                            "    - ARM: 9468/1: fix memset64() on big-endian",
                            "    - mm/kfence: randomize the freelist on initialization",
                            "    - Documentation: Remove bogus claim about del_timer_sync()",
                            "    - timers: Get rid of del_singleshot_timer_sync()",
                            "    - Documentation: Replace del_timer/del_timer_sync()",
                            "    - timers: Update the documentation to reflect on the new timer_shutdown()",
                            "      API",
                            "    - Bluetooth: hci_qca: Fix the teardown problem for real",
                            "    - binderfs: fix ida_alloc_max() upper bound",
                            "    - net: usb: sr9700: support devices with virtual driver CD",
                            "    - block,bfq: fix aux stat accumulation destination",
                            "    - HID: multitouch: add MT_QUIRK_STICKY_FINGERS to MT_CLS_VTL",
                            "    - HID: intel-ish-hid: Reset enum_devices_done before enumeration",
                            "    - HID: playstation: Center initial joystick axes to prevent spurious",
                            "      events",
                            "    - ALSA: hda/realtek: add HP Laptop 15s-eq1xxx mute LED quirk",
                            "    - netfilter: replace -EEXIST with -EBUSY",
                            "    - HID: quirks: Add another Chicony HP 5MP Cameras to hid_ignore_list",
                            "    - HID: Apply quirk HID_QUIRK_ALWAYS_POLL to Edifier QR30 (2d99:a101)",
                            "    - ring-buffer: Avoid softlockup in ring_buffer_resize() during memory free",
                            "    - wifi: mac80211: collect station statistics earlier when disconnect",
                            "    - ASoC: davinci-evm: Fix reference leak in davinci_evm_probe",
                            "    - ASoC: tlv320adcx140: Propagate error codes during probe",
                            "    - wifi: cfg80211: Fix bitrate calculation overflow for HE rates",
                            "    - wifi: mac80211: don't increment crypto_tx_tailroom_needed_cnt twice",
                            "    - platform/x86: intel_telemetry: Fix PSS event register mask",
                            "    - tipc: use kfree_sensitive() for session key material",
                            "    - hwmon: (occ) Mark occ_init_attribute() as __printf",
                            "    - nvmet-tcp: add an helper to free the cmd buffers",
                            "    - nvmet-tcp: fix memory leak when performing a controller reset",
                            "    - nvmet-tcp: fix regression in data_digest calculation",
                            "    - nvmet-tcp: don't map pages which can't come from HIGHMEM",
                            "    - tracing: Fix ftrace event field alignments",
                            "    - gve: Correct ethtool rx_dropped calculation",
                            "    - spi: tegra210-quad: Return IRQ_HANDLED when timeout already processed",
                            "      transfer",
                            "    - spi: tegra210-quad: Move curr_xfer read inside spinlock",
                            "    - spi: tegra210-quad: Protect curr_xfer assignment in",
                            "      tegra_qspi_setup_transfer_one",
                            "    - spi: tegra210-quad: Protect curr_xfer clearing in",
                            "      tegra_qspi_non_combined_seq_xfer",
                            "    - nvmet-tcp: pass iov_len instead of sg->length to bvec_set_page()",
                            "    - riscv: Replace function-like macro by static inline function",
                            "    - Linux 5.15.200",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23182",
                            "    - spi: tegra: Fix a memory leak in tegra_slink_probe()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23202",
                            "    - spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71089",
                            "    - iommu: disable SVA when CONFIG_X86 is set",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2023-53673",
                            "    - Bluetooth: hci_event: call disconnect callback before deleting conn",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23262",
                            "    - gve: Fix stats report corruption on queue count change",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-40082",
                            "    - hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-37822",
                            "    - riscv: uprobes: Add missing fence.i after building the XOL buffer",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23190",
                            "    - ASoC: amd: fix memory leak in acp3x pdm dma ops",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23112",
                            "    - nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23111",
                            "    - netfilter: nf_tables: fix inverted genmask check in",
                            "      nft_map_catchall_activate()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23180",
                            "    - dpaa2-switch: add bounds check for if_id in IRQ handler",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23256",
                            "    - net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23257",
                            "    - net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23258",
                            "    - net: liquidio: Initialize netdev pointer before queue setup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23206",
                            "    - dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23176",
                            "    - platform/x86: toshiba_haps: Fix memory leaks in add/remove routines",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23216",
                            "    - scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23193",
                            "    - scsi: target: iscsi: Fix use-after-free in",
                            "      iscsit_dec_session_usage_count()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71220",
                            "    - smb/server: call ksmbd_session_rpc_close() on error path in",
                            "      create_smb2_pipe()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71222",
                            "    - wifi: wlcore: ensure skb headroom before skb_push",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71224",
                            "    - wifi: mac80211: ocb: skip rx_no_sta when interface is not joined",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-68214",
                            "    - timers: Fix NULL function pointer race in timer_shutdown_sync()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-38201",
                            "    - netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23198",
                            "    - KVM: Don't clobber irqfd routing type when deassigning irqfd",
                            "",
                            "  * CVE-2026-23272",
                            "    - netfilter: nf_tables: always increment set element count",
                            "    - netfilter: nf_tables: fix set size with rbtree backend",
                            "    - netfilter: nf_tables: unconditionally bump set->nelems before insertion",
                            "",
                            "  * CVE-2026-31418",
                            "    - netfilter: ipset: drop logically empty buckets in mtype_del",
                            "",
                            "  * CVE-2026-23278",
                            "    - netfilter: nf_tables: always walk all pending catchall elements",
                            "",
                            "  * CVE-2026-46300",
                            "    - net: skbuff: preserve shared-frag marker during coalescing",
                            "    - net: skbuff: propagate shared-frag marker through frag-transfer helpers",
                            "",
                            "  * net/rds: reset op_nents when zerocopy page pin fails (LP: #2153962)",
                            "    - net/rds: reset op_nents when zerocopy page pin fails",
                            "",
                            "  * CVE-2026-46333",
                            "    - ptrace: slightly saner 'get_dumpable()' logic",
                            "",
                            "  * CVE-2026-43500",
                            "    - rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present",
                            "",
                            "  * CVE-2026-43284",
                            "    - xfrm: esp: avoid in-place decrypt on shared skb frags",
                            "    - xfrm: esp: ipv4: fix up flags setting",
                            "",
                            "  * CVE-2026-31419",
                            "    - net: bonding: fix use-after-free in bond_xmit_broadcast()",
                            "",
                            "  * CVE-2026-31431",
                            "    - crypto: scatterwalk - Backport memcpy_sglist()",
                            "    - crypto: algif_aead - use memcpy_sglist() instead of null skcipher",
                            "    - crypto: algif_aead - Revert to operating out-of-place",
                            "    - crypto: algif_aead - snapshot IV for async AEAD requests",
                            "    - crypto: authenc - use memcpy_sglist() instead of null skcipher",
                            "    - crypto: authencesn - Do not place hiseq at end of dst for out-of-place",
                            "      decryption",
                            "    - crypto: authencesn - Fix src offset when decrypting in-place",
                            "    - crypto: af_alg - Fix page reassignment overflow in af_alg_pull_tsgl",
                            "    - crypto: algif_aead - Fix minimum RX size check for decryption",
                            "",
                            "  * CVE-2026-31533",
                            "    - net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption",
                            "",
                            "  * CVE-2026-31504",
                            "    - net: fix fanout UAF in packet_release() via NETDEV_UP race",
                            ""
                        ],
                        "package": "linux",
                        "version": "5.15.0-184.194",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2154219,
                            2153556,
                            2150730,
                            2149767,
                            2149767,
                            2149872,
                            2141536,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2153962
                        ],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:19:26 +0200"
                    }
                ],
                "notes": "linux-headers-5.15.0-185-generic version '5.15.0-185.195' (source package linux version '5.15.0-185.195') was added. linux-headers-5.15.0-185-generic version '5.15.0-185.195' has the same source package name, linux, as removed package linux-headers-5.15.0-181. As such we can use the source package version of the removed package, '5.15.0-181.191', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-5.15.0-185-generic",
                "from_version": {
                    "source_package_name": "linux-signed",
                    "source_package_version": "5.15.0-181.191",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux-signed",
                    "source_package_version": "5.15.0-185.195",
                    "version": "5.15.0-185.195"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    1786013,
                    1786013,
                    1786013
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 5.15.0-185.195",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] debian/tracking-bug -- resync from main package",
                            ""
                        ],
                        "package": "linux-signed",
                        "version": "5.15.0-185.195",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            1786013
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 18:28:49 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 5.15.0-184.194",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] debian/tracking-bug -- resync from main package",
                            ""
                        ],
                        "package": "linux-signed",
                        "version": "5.15.0-184.194",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            1786013
                        ],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:25:51 +0200"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 5.15.0-183.193",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] debian/tracking-bug -- resync from main package",
                            ""
                        ],
                        "package": "linux-signed",
                        "version": "5.15.0-183.193",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            1786013
                        ],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Sat, 23 May 2026 00:57:13 +0200"
                    }
                ],
                "notes": "linux-image-5.15.0-185-generic version '5.15.0-185.195' (source package linux-signed version '5.15.0-185.195') was added. linux-image-5.15.0-185-generic version '5.15.0-185.195' has the same source package name, linux-signed, as removed package linux-image-5.15.0-181-generic. As such we can use the source package version of the removed package, '5.15.0-181.191', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            },
            {
                "name": "linux-modules-5.15.0-185-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-181.191",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-185.195",
                    "version": "5.15.0-185.195"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-45988",
                        "url": "https://ubuntu.com/security/CVE-2026-45988",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Fix re-decryption of RESPONSE packets  If a RESPONSE packet gets a temporary failure during processing, it may end up in a partially decrypted state - and then get requeued for a retry.  Fix this by just discarding the packet; we will send another CHALLENGE packet and thereby elicit a further response.  Similarly, discard an incoming CHALLENGE packet if we get an error whilst generating a RESPONSE; the server will send another CHALLENGE.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-27 14:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46195",
                        "url": "https://ubuntu.com/security/CVE-2026-46195",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: validate dacloffset before building DACL pointers  parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor.  On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths.  Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46135",
                        "url": "https://ubuntu.com/security/CVE-2026-46135",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: fix race between ICReq handling and queue teardown  nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown.  If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock.  If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue.  The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference.  Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started.  Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31402",
                        "url": "https://ubuntu.com/security/CVE-2026-31402",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nfsd: fix heap overflow in NFSv4.0 LOCK replay cache  The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT).  When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory.  This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial.  We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large.  Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43071",
                        "url": "https://ubuntu.com/security/CVE-2026-43071",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dcache: Limit the minimal number of bucket to two  There is an OOB read problem on dentry_hashtable when user sets 'dhash_entries=1':   BUG: unable to handle page fault for address: ffff888b30b774b0   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   Oops: Oops: 0000 [#1] SMP PTI   RIP: 0010:__d_lookup+0x56/0x120    Call Trace:     d_lookup.cold+0x16/0x5d     lookup_dcache+0x27/0xf0     lookup_one_qstr_excl+0x2a/0x180     start_dirop+0x55/0xa0     simple_start_creating+0x8d/0xa0     debugfs_start_creating+0x8c/0x180     debugfs_create_dir+0x1d/0x1c0     pinctrl_init+0x6d/0x140     do_one_initcall+0x6d/0x3d0     kernel_init_freeable+0x39f/0x460     kernel_init+0x2a/0x260  There will be only one bucket in dentry_hashtable when dhash_entries is set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then, following process will access more than one buckets(which memory region is not allocated) in dentry_hashtable:  d_lookup   b = d_hash(hash)     dentry_hashtable + ((u32)hashlen >> d_hash_shift)     // The C standard defines the behavior of right shift amounts     // exceeding the bit width of the operand as undefined. The     // result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',     // so 'b' will point to an unallocated memory region.   hlist_bl_for_each_entry_rcu(b)    hlist_bl_first_rcu(head)     h->first  // read OOB!  Fix it by limiting the minimal number of dentry_hashtable bucket to two, so that 'd_hash_shift' won't exceeds the bit width of type u32.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-05-05 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46119",
                        "url": "https://ubuntu.com/security/CVE-2026-46119",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix slab-out-of-bounds access in auth message processing  If a (potentially corrupted) message of type CEPH_MSG_AUTH_REPLY contains a positive value in its result field, it is treated as an error code by ceph_handle_auth_reply() and returned to handle_auth_reply(). Thereafter, an attempt is made to send the preallocated message of type CEPH_MSG_AUTH, where the returned value is interpreted as the size of the front segment to send. If the result value in the message is greater than the size of the memory buffer allocated for the front segment, an out-of-bounds access occurs, and the content of the memory region beyond this buffer is sent out.  This patch fixes the issue by treating only negative values in the result field as errors. Positive values are therefore treated as success in the same way as a zero value. Additionally, a BUG_ON is added to __send_prepared_auth_request() comparing the len parameter to front_alloc_len to prevent sending the message if it exceeds the bounds of the allocation and to make it easier to catch any logic flaws leading to this.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-28 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43501",
                        "url": "https://ubuntu.com/security/CVE-2026-43501",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: rpl: reserve mac_len headroom when recompressed SRH grows  ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps the next segment into ipv6_hdr->daddr, recompresses, then pulls the old header and pushes the new one plus the IPv6 header back.  The recompressed header can be larger than the received one when the swap reduces the common-prefix length the segments share with daddr (CmprI=0, CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).  pskb_expand_head() was gated on segments_left == 0, so on earlier segments the push consumed unchecked headroom.  Once skb_push() leaves fewer than skb->mac_len bytes in front of data, skb_mac_header_rebuild()'s call to:  \tskb_set_mac_header(skb, -skb->mac_len);  will store (data - head) - mac_len into the u16 mac_header field, which wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB past skb->head.  A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.  Fix this by expanding the head whenever the remaining room is less than the push size plus mac_len, and request that much extra so the rebuilt MAC header fits afterwards.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-21 13:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46043",
                        "url": "https://ubuntu.com/security/CVE-2026-46043",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv  rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used.  However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen:    payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)                  - RXE_ICRC_SIZE  This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users.  Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-27 14:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43493",
                        "url": "https://ubuntu.com/security/CVE-2026-43493",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: pcrypt - Fix handling of MAY_BACKLOG requests  MAY_BACKLOG requests can return EBUSY.  Handle them by checking for that value and filtering out EINPROGRESS notifications.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-19 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31637",
                        "url": "https://ubuntu.com/security/CVE-2026-31637",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: reject undecryptable rxkad response tickets  rxkad_decrypt_ticket() decrypts the RXKAD response ticket and then parses the buffer as plaintext without checking whether crypto_skcipher_decrypt() succeeded.  A malformed RESPONSE can therefore use a non-block-aligned ticket length, make the decrypt operation fail, and still drive the ticket parser with attacker-controlled bytes.  Check the decrypt result and abort the connection with RXKADBADTICKET when ticket decryption fails.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31657",
                        "url": "https://ubuntu.com/security/CVE-2026-31657",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: hold claim backbone gateways by reference  batadv_bla_add_claim() can replace claim->backbone_gw and drop the old gateway's last reference while readers still follow the pointer.  The netlink claim dump path dereferences claim->backbone_gw->orig and takes claim->backbone_gw->crc_lock without pinning the underlying backbone gateway. batadv_bla_check_claim() still has the same naked pointer access pattern.  Reuse batadv_bla_claim_get_backbone_gw() in both readers so they operate on a stable gateway reference until the read-side work is complete. This keeps the dump and claim-check paths aligned with the lifetime rules introduced for the other BLA claim readers.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31685",
                        "url": "https://ubuntu.com/security/CVE-2026-31685",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ip6t_eui64: reject invalid MAC header for all packets  `eui64_mt6()` derives a modified EUI-64 from the Ethernet source address and compares it with the low 64 bits of the IPv6 source address.  The existing guard only rejects an invalid MAC header when `par->fragoff != 0`. For packets with `par->fragoff == 0`, `eui64_mt6()` can still reach `eth_hdr(skb)` even when the MAC header is not valid.  Fix this by removing the `par->fragoff != 0` condition so that packets with an invalid MAC header are rejected before accessing `eth_hdr(skb)`.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-25 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43117",
                        "url": "https://ubuntu.com/security/CVE-2026-43117",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: tracepoints: get correct superblock from dentry in event btrfs_sync_file()  If overlay is used on top of btrfs, dentry->d_sb translates to overlay's super block and fsid assignment will lead to a crash.  Use file_inode(file)->i_sb to always get btrfs_sb.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-06 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43114",
                        "url": "https://ubuntu.com/security/CVE-2026-43114",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry  New test case fails unexpectedly when avx2 matching functions are used.  The test first loads a ranomly generated pipapo set with 'ipv4 . port' key, i.e.  nft -f foo.  This works.  Then, it reloads the set after a flush: (echo flush set t s; cat foo) | nft -f -  This is expected to work, because its the same set after all and it was already loaded once.  But with avx2, this fails: nft reports a clashing element.  The reported clash is of following form:      We successfully re-inserted       a . b       c . d  Then we try to insert a . d  avx2 finds the already existing a . d, which (due to 'flush set') is marked as invalid in the new generation.  It skips the element and moves to next.  Due to incorrect masking, the skip-step finds the next matching element *only considering the first field*,  i.e. we return the already reinserted \"a . b\", even though the last field is different and the entry should not have been matched.  No such error is reported for the generic c implementation (no avx2) or when the last field has to use the 'nft_pipapo_avx2_lookup_slow' fallback.  Bisection points to 7711f4bb4b36 (\"netfilter: nft_set_pipapo: fix range overlap detection\") but that fix merely uncovers this bug.  Before this commit, the wrong element is returned, but erronously reported as a full, identical duplicate.  The root-cause is too early return in the avx2 match functions. When we process the last field, we should continue to process data until the entire input size has been consumed to make sure no stale bits remain in the map.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-06 10:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31478",
                        "url": "https://ubuntu.com/security/CVE-2026-31478",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()  After this commit (e2b76ab8b5c9 \"ksmbd: add support for read compound\"), response buffer management was changed to use dynamic iov array. In the new design, smb2_calc_max_out_buf_len() expects the second argument (hdr2_len) to be the offset of ->Buffer field in the response structure, not a hardcoded magic number. Fix the remaining call sites to use the correct offsetof() value.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-22 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31668",
                        "url": "https://ubuntu.com/security/CVE-2026-31668",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  seg6: separate dst_cache for input and output paths in seg6 lwtunnel  The seg6 lwtunnel uses a single dst_cache per encap route, shared between seg6_input_core() and seg6_output_core(). These two paths can perform the post-encap SID lookup in different routing contexts (e.g., ip rules matching on the ingress interface, or VRF table separation). Whichever path runs first populates the cache, and the other reuses it blindly, bypassing its own lookup.  Fix this by splitting the cache into cache_input and cache_output, so each path maintains its own cached dst independently.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31659",
                        "url": "https://ubuntu.com/security/CVE-2026-31659",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: reject oversized global TT response buffers  batadv_tt_prepare_tvlv_global_data() builds the allocation length for a global TT response in 16-bit temporaries. When a remote originator advertises a large enough global TT, the TT payload length plus the VLAN header offset can exceed 65535 and wrap before kmalloc().  The full-table response path still uses the original TT payload length when it fills tt_change, so the wrapped allocation is too small and batadv_tt_prepare_tvlv_global_data() writes past the end of the heap object before the later packet-size check runs.  Fix this by rejecting TT responses whose TVLV value length cannot fit in the 16-bit TVLV payload length field.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31649",
                        "url": "https://ubuntu.com/security/CVE-2026-31649",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: stmmac: fix integer underflow in chain mode  The jumbo_frm() chain-mode implementation unconditionally computes      len = nopaged_len - bmax;  where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB.  However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb->len (total length including page fragments):      is_jumbo = stmmac_is_jumbo_frm(priv, skb->len, enh_desc);  When a packet has a small linear portion (nopaged_len <= bmax) but a large total length due to page fragments (skb->len > bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx).  This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb->data + bmax * i pointers far beyond the skb buffer to dma_map_single().  On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware.  Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax).  Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31669",
                        "url": "https://ubuntu.com/security/CVE-2026-31669",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mptcp: fix slab-use-after-free in __inet_lookup_established  The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register().  However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently.  This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established.  Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43011",
                        "url": "https://ubuntu.com/security/CVE-2026-43011",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/x25: Fix potential double free of skb  When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain:  x25_queue_rx_frame returns 1     |     v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0     |     v x25_process_rx_frame returns queued=0     |     v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again  This would free the same skb twice. Looking at x25_backlog_rcv:  net/x25/x25_in.c:x25_backlog_rcv() {     ...     queued = x25_process_rx_frame(sk, skb);     ...     if (!queued)         kfree_skb(skb); }",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43037",
                        "url": "https://ubuntu.com/security/CVE-2026-43037",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ip6_tunnel: clear skb2->cb[] in ip4ip6_err()  Oskar Kjos reported the following problem.  ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).  To fix this we clear skb2->cb[], as suggested by Oskar Kjos.  Also add minimal IPv4 header validation (version == 4, ihl >= 5).",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43038",
                        "url": "https://ubuntu.com/security/CVE-2026-43038",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()  Sashiko AI-review observed:    In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet   where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2   and passed to icmp6_send(), it uses IP6CB(skb2).    IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso   offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm   at offset 18.    If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao   would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called   and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO).    This would scan the inner, attacker-controlled IPv6 packet starting at that   offset, potentially returning a fake TLV without checking if the remaining   packet length can hold the full 18-byte struct ipv6_destopt_hao.    Could mip6_addr_swap() then perform a 16-byte swap that extends past the end   of the packet data into skb_shared_info?    Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and   ip6ip6_err() to prevent this?  This patch implements the first suggestion.  I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-01 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31682",
                        "url": "https://ubuntu.com/security/CVE-2026-31682",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  bridge: br_nd_send: linearize skb before parsing ND options  br_nd_send() parses neighbour discovery options from ns->opt[] and assumes that these options are in the linear part of request.  Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns->opt[] in that case can access data past the linear buffer.  Linearize request before option parsing and derive ns from the linear network header.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-25 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23450",
                        "url": "https://ubuntu.com/security/CVE-2026-23450",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()  Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1].  smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release().  This leads to two issues:  1) NULL pointer dereference: sk_user_data is NULL when    accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the    smc_sock is freed before its fields (e.g., queued_smc_hs,    ori_af_ops) are accessed.  The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race):    CPU A (softirq)              CPU B (process ctx)    tcp_v4_rcv()     TCP_NEW_SYN_RECV:     sk = req->rsk_listener     sock_hold(sk)     /* No lock on listener */                                smc_close_active():                                  write_lock_bh(cb_lock)                                  sk_user_data = NULL                                  write_unlock_bh(cb_lock)                                  ...                                  smc_clcsock_release()                                  sock_put(smc->sk) x2                                    -> smc_sock freed!     tcp_check_req()       smc_tcp_syn_recv_sock():         smc = user_data(sk)           -> NULL or dangling         smc->queued_smc_hs           -> crash!  Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed.  Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight.  - Set SOCK_RCU_FREE on the SMC listen socket so that   smc_sock freeing is deferred until after the RCU grace   period. This guarantees the memory is still valid when   accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the   smc_sock. If the refcount has already reached zero (close   path completed), it returns false and we bail out safely.  Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected.  Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied.  [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23428",
                        "url": "https://ubuntu.com/security/CVE-2026-23428",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free of share_conf in compound request  smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely.  If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf.  KASAN report:  [    4.144653] ================================================================== [    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [    4.145772] [    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [    4.145875] Workqueue: ksmbd-io handle_ksmbd_work [    4.145888] Call Trace: [    4.145892]  <TASK> [    4.145894]  dump_stack_lvl+0x64/0x80 [    4.145910]  print_report+0xce/0x660 [    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [    4.145928]  ? smb2_write+0xc74/0xe70 [    4.145931]  kasan_report+0xce/0x100 [    4.145934]  ? smb2_write+0xc74/0xe70 [    4.145937]  smb2_write+0xc74/0xe70 [    4.145939]  ? __pfx_smb2_write+0x10/0x10 [    4.145942]  ? _raw_spin_unlock+0xe/0x30 [    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0 [    4.145948]  ? smb2_tree_disconnect+0x31c/0x480 [    4.145951]  handle_ksmbd_work+0x40f/0x1080 [    4.145953]  process_one_work+0x5fa/0xef0 [    4.145962]  ? assign_work+0x122/0x3e0 [    4.145964]  worker_thread+0x54b/0xf70 [    4.145967]  ? __pfx_worker_thread+0x10/0x10 [    4.145970]  kthread+0x346/0x470 [    4.145976]  ? recalc_sigpending+0x19b/0x230 [    4.145980]  ? __pfx_kthread+0x10/0x10 [    4.145984]  ret_from_fork+0x4fb/0x6c0 [    4.145992]  ? __pfx_ret_from_fork+0x10/0x10 [    4.145995]  ? __switch_to+0x36c/0xbe0 [    4.145999]  ? __pfx_kthread+0x10/0x10 [    4.146003]  ret_from_fork_asm+0x1a/0x30 [    4.146013]  </TASK> [    4.146014] [    4.149858] Allocated by task 44: [    4.149953]  kasan_save_stack+0x33/0x60 [    4.150061]  kasan_save_track+0x14/0x30 [    4.150169]  __kasan_kmalloc+0x8f/0xa0 [    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0 [    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600 [    4.150529]  smb2_tree_connect+0x2e6/0x1000 [    4.150645]  handle_ksmbd_work+0x40f/0x1080 [    4.150761]  process_one_work+0x5fa/0xef0 [    4.150873]  worker_thread+0x54b/0xf70 [    4.150978]  kthread+0x346/0x470 [    4.151071]  ret_from_fork+0x4fb/0x6c0 [    4.151176]  ret_from_fork_asm+0x1a/0x30 [    4.151286] [    4.151332] Freed by task 44: [    4.151418]  kasan_save_stack+0x33/0x60 [    4.151526]  kasan_save_track+0x14/0x30 [    4.151634]  kasan_save_free_info+0x3b/0x60 [    4.151751]  __kasan_slab_free+0x43/0x70 [    4.151861]  kfree+0x1ca/0x430 [    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190 [    4.152088]  smb2_tree_disconnect+0x1cd/0x480 [    4.152211]  handle_ksmbd_work+0x40f/0x1080 [    4.152326]  process_one_work+0x5fa/0xef0 [    4.152438]  worker_thread+0x54b/0xf70 [    4.152545]  kthread+0x346/0x470 [    4.152638]  ret_from_fork+0x4fb/0x6c0 [    4.152743]  ret_from_fork_asm+0x1a/0x30 [    4.152853] [    4.152900] The buggy address belongs to the object at ffff88810430c180 [    4.152900]  which belongs to the cache kmalloc-96 of size 96 [    4.153226] The buggy address is located 20 bytes inside of [    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [    4.153549] [    4.153596] The buggy address belongs to the physical page: [    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [    4.154000] flags: 0x ---truncated---",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23455",
                        "url": "https://ubuntu.com/security/CVE-2026-23455",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()  In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read.  Add a check to ensure len is positive after the decrement.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-03 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43186",
                        "url": "https://ubuntu.com/security/CVE-2026-43186",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()  On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic.  Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it:    - in ioam6_iptunnel.c (send path, existing validation) to replace     the open-coded computation;   - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose     nodelen is inconsistent with the type field, before any data is     written.  Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-06 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43185",
                        "url": "https://ubuntu.com/security/CVE-2026-43185",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()  smb_direct_prepare_negotiation() casts an unsigned __u32 value from sp->max_recv_size and req->preferred_send_size to a signed int before computing min_t(int, ...). A maliciously provided preferred_send_size of 0x80000000 will return as smaller than max_recv_size, and then be used to set the maximum allowed alowed receive size for the next message.  By sending a second message with a large value (>1420 bytes) the attacker can then achieve a heap buffer overflow.  This fix replaces min_t(int, ...) with min_t(u32)",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-06 12:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43341",
                        "url": "https://ubuntu.com/security/CVE-2026-43341",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/ipv6: ioam6: prevent schema length wraparound in trace fill  ioam6_fill_trace_data() stores the schema contribution to the trace length in a u8. With bit 22 enabled and the largest schema payload, sclen becomes 1 + 1020 / 4, wraps from 256 to 0, and bypasses the remaining-space check. __ioam6_fill_trace_data() then positions the write cursor without reserving the schema area but still copies the 4-byte schema header and the full schema payload, overrunning the trace buffer.  Keep sclen in an unsigned int so the remaining-space check and the write cursor calculation both see the full schema length.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31607",
                        "url": "https://ubuntu.com/security/CVE-2026-31607",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  usbip: validate number_of_packets in usbip_pack_ret_submit()  When a USB/IP client receives a RET_SUBMIT response, usbip_pack_ret_submit() unconditionally overwrites urb->number_of_packets from the network PDU. This value is subsequently used as the loop bound in usbip_recv_iso() and usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible array whose size was fixed at URB allocation time based on the *original* number_of_packets from the CMD_SUBMIT.  A malicious USB/IP server can set number_of_packets in the response to a value larger than what was originally submitted, causing a heap out-of-bounds write when usbip_recv_iso() writes to urb->iso_frame_desc[i] beyond the allocated region.  KASAN confirmed this with kernel 7.0.0-rc5:    BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640   Write of size 4 at addr ffff888106351d40 by task vhci_rx/69    The buggy address is located 0 bytes to the right of    allocated 320-byte region [ffff888106351c00, ffff888106351d40)  The server side (stub_rx.c) and gadget side (vudc_rx.c) already validate number_of_packets in the CMD_SUBMIT path since commits c6688ef9f297 (\"usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input\") and b78d830f0049 (\"usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input\"). The server side validates against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point. On the client side we have the original URB, so we can use the tighter bound: the response must not exceed the original number_of_packets.  This mirrors the existing validation of actual_length against transfer_buffer_length in usbip_recv_xbuff(), which checks the response value against the original allocation size.  Kelvin Mbogo's series (\"usb: usbip: fix integer overflow in usbip_recv_iso()\", v2) hardens the receive-side functions themselves; this patch complements that work by catching the bad value at its source -- in usbip_pack_ret_submit() before the overwrite -- and using the tighter per-URB allocation bound rather than the global USBIP_MAX_ISO_PACKETS limit.  Fix this by checking rpdu->number_of_packets against urb->number_of_packets in usbip_pack_ret_submit() before the overwrite. On violation, clamp to zero so that usbip_recv_iso() and usbip_pad_iso() safely return early.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-24 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43383",
                        "url": "https://ubuntu.com/security/CVE-2026-43383",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tcp-md5: Fix MAC comparison to be constant-time  To prevent timing attacks, MACs need to be compared in constant time.  Use the appropriate helper function for this.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-68263",
                        "url": "https://ubuntu.com/security/CVE-2025-68263",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: ipc: fix use-after-free in ipc_msg_send_request  ipc_msg_send_request() waits for a generic netlink reply using an ipc_msg_table_entry on the stack. The generic netlink handler (handle_generic_event()/handle_response()) fills entry->response under ipc_msg_table_lock, but ipc_msg_send_request() used to validate and free entry->response without holding the same lock.  Under high concurrency this allows a race where handle_response() is copying data into entry->response while ipc_msg_send_request() has just freed it, leading to a slab-use-after-free reported by KASAN in handle_generic_event():    BUG: KASAN: slab-use-after-free in handle_generic_event+0x3c4/0x5f0 [ksmbd]   Write of size 12 at addr ffff888198ee6e20 by task pool/109349   ...   Freed by task:     kvfree     ipc_msg_send_request [ksmbd]     ksmbd_rpc_open -> ksmbd_session_rpc_open [ksmbd]  Fix by: - Taking ipc_msg_table_lock in ipc_msg_send_request() while validating   entry->response, freeing it when invalid, and removing the entry from   ipc_msg_table. - Returning the final entry->response pointer to the caller only after   the hash entry is removed under the lock. - Returning NULL in the error path, preserving the original API   semantics.  This makes all accesses to entry->response consistent with handle_response(), which already updates and fills the response buffer under ipc_msg_table_lock, and closes the race that allowed the UAF.",
                        "cve_priority": "critical",
                        "cve_public_date": "2025-12-16 15:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46243",
                        "url": "https://ubuntu.com/security/CVE-2026-46243",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: reject userspace cifs.spnego descriptions  cifs.spnego key descriptions contain authority-bearing fields such as pid, uid, creduid, and upcall_target that cifs.upcall treats as kernel-originating inputs. However, userspace can also create keys of this type through request_key(2) or add_key(2), allowing those fields to be supplied without CIFS origin.  Only accept cifs.spnego descriptions while CIFS is using its private spnego_cred to request the key.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-06-01 17:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43414",
                        "url": "https://ubuntu.com/security/CVE-2026-43414",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: qla2xxx: Completely fix fcport double free  In qla24xx_els_dcmd_iocb() sp->free is set to qla2x00_els_dcmd_sp_free(). When an error happens, this function is called by qla2x00_sp_release(), when kref_put() releases the first and the last reference.  qla2x00_els_dcmd_sp_free() frees fcport by calling qla2x00_free_fcport(). Doing it one more time after kref_put() is a bad idea.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43407",
                        "url": "https://ubuntu.com/security/CVE-2026-43407",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()  This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation.  This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length.  Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length.  BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262  CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace:  <TASK>  dump_stack_lvl+0x76/0xa0  print_report+0xd1/0x620  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? kasan_complete_mode_report_info+0x72/0x210  kasan_report+0xe7/0x130  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  __asan_report_load_n_noabort+0xf/0x20  ceph_handle_auth_reply+0x642/0x7a0 [libceph]  mon_dispatch+0x973/0x23d0 [libceph]  ? apparmor_socket_recvmsg+0x6b/0xa0  ? __pfx_mon_dispatch+0x10/0x10 [libceph]  ? __kasan_check_write+0x14/0x30i  ? mutex_unlock+0x7f/0xd0  ? __pfx_mutex_unlock+0x10/0x10  ? __pfx_do_recvmsg+0x10/0x10 [libceph]  ceph_con_process_message+0x1f1/0x650 [libceph]  process_message+0x1e/0x450 [libceph]  ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]  ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph]  ? save_fpregs_to_fpstate+0xb0/0x230  ? raw_spin_rq_unlock+0x17/0xa0  ? finish_task_switch.isra.0+0x13b/0x760  ? __switch_to+0x385/0xda0  ? __kasan_check_write+0x14/0x30  ? mutex_lock+0x8d/0xe0  ? __pfx_mutex_lock+0x10/0x10  ceph_con_workfn+0x248/0x10c0 [libceph]  process_one_work+0x629/0xf80  ? __kasan_check_write+0x14/0x30  worker_thread+0x87f/0x1570  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? __pfx_try_to_wake_up+0x10/0x10  ? kasan_print_address_stack_frame+0x1f7/0x280  ? __pfx_worker_thread+0x10/0x10  kthread+0x396/0x830  ? __pfx__raw_spin_lock_irq+0x10/0x10  ? __pfx_kthread+0x10/0x10  ? __kasan_check_write+0x14/0x30  ? recalc_sigpending+0x180/0x210  ? __pfx_kthread+0x10/0x10  ret_from_fork+0x3f7/0x610  ? __pfx_ret_from_fork+0x10/0x10  ? __switch_to+0x385/0xda0  ? __pfx_kthread+0x10/0x10  ret_from_fork_asm+0x1a/0x30  </TASK>  [ idryomov: replace if statements with ceph_decode_need() for   payload_len and result_msg_len ]",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43406",
                        "url": "https://ubuntu.com/security/CVE-2026-43406",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: prevent potential out-of-bounds reads in process_message_header()  If the message frame is (maliciously) corrupted in a way that the length of the control segment ends up being less than the size of the message header or a different frame is made to look like a message frame, out-of-bounds reads may ensue in process_message_header().  Perform an explicit bounds check before decoding the message header.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 15:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43304",
                        "url": "https://ubuntu.com/security/CVE-2026-43304",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: define and enforce CEPH_MAX_KEY_LEN  When decoding the key, verify that the key material would fit into a fixed-size buffer in process_auth_done() and generally has a sane length.  The new CEPH_MAX_KEY_LEN check replaces the existing check for a key with no key material which is a) not universal since CEPH_CRYPTO_NONE has to be excluded and b) doesn't provide much value since a smaller than needed key is just as invalid as no key -- this has to be handled elsewhere anyway.",
                        "cve_priority": "critical",
                        "cve_public_date": "2026-05-08 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37924",
                        "url": "https://ubuntu.com/security/CVE-2025-37924",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free in kerberos authentication  Setting sess->user = NULL was introduced to fix the dangling pointer created by ksmbd_free_user. However, it is possible another thread could be operating on the session and make use of sess->user after it has been passed to ksmbd_free_user but before sess->user is set to NULL.",
                        "cve_priority": "high",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37778",
                        "url": "https://ubuntu.com/security/CVE-2025-37778",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: Fix dangling pointer in krb_authenticate  krb_authenticate frees sess->user and does not set the pointer to NULL. It calls ksmbd_krb5_authenticate to reinitialise sess->user but that function may return without doing so. If that happens then smb2_sess_setup, which calls krb_authenticate, will be accessing free'd memory when it later uses sess->user.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-01 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2022-48816",
                        "url": "https://ubuntu.com/security/CVE-2022-48816",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  SUNRPC: lock against ->sock changing during sysfs read  ->sock can be set to NULL asynchronously unless ->recv_mutex is held. So it is important to hold that mutex.  Otherwise a sysfs read can trigger an oops. Commit 17f09d3f619a (\"SUNRPC: Check if the xprt is connected before handling sysfs reads\") appears to attempt to fix this problem, but it only narrows the race window.",
                        "cve_priority": "medium",
                        "cve_public_date": "2024-07-16 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23182",
                        "url": "https://ubuntu.com/security/CVE-2026-23182",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra: Fix a memory leak in tegra_slink_probe()  In tegra_slink_probe(), when platform_get_irq() fails, it directly returns from the function with an error code, which causes a memory leak.  Replace it with a goto label to ensure proper cleanup.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23202",
                        "url": "https://ubuntu.com/security/CVE-2026-23202",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer  The curr_xfer field is read by the IRQ handler without holding the lock to check if a transfer is in progress. When clearing curr_xfer in the combined sequence transfer loop, protect it with the spinlock to prevent a race with the interrupt handler.  Protect the curr_xfer clearing at the exit path of tegra_qspi_combined_seq_xfer() with the spinlock to prevent a race with the interrupt handler that reads this field.  Without this protection, the IRQ handler could read a partially updated curr_xfer value, leading to NULL pointer dereference or use-after-free.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71089",
                        "url": "https://ubuntu.com/security/CVE-2025-71089",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  iommu: disable SVA when CONFIG_X86 is set  Patch series \"Fix stale IOTLB entries for kernel address space\", v7.  This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA).  In an SVA context, an IOMMU can cache kernel page table entries.  When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries.  This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption.  This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused.   This patch (of 8):  In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables.  The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table.  Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries.  The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings.  This can cause the IOMMU's internal caches to retain stale entries for kernel VA.  Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated.  The IOMMU could misinterpret the new data as valid page table entries.  The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation.  This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables.  Currently, SVA contexts are unprivileged and cannot access kernel mappings.  However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out.  This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern.  Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-01-13 16:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2023-53673",
                        "url": "https://ubuntu.com/security/CVE-2023-53673",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  Bluetooth: hci_event: call disconnect callback before deleting conn  In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.  ISO, L2CAP and SCO connections refer to the hci_conn without hci_conn_get, so disconn_cfm must be called so they can clean up their conn, otherwise use-after-free occurs.  ISO: ========================================================== iso_sock_connect:880: sk 00000000eabd6557 iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073 hci_dev_put:1487: hci0 orig refcnt 17 __iso_chan_add:214: conn 00000000b6251073 iso_sock_clear_timer:117: sock 00000000eabd6557 state 3 ... hci_rx_work:4085: hci0 Event packet hci_event_packet:7601: hci0: event 0x0f hci_cmd_status_evt:4346: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3107: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560 hci_conn_unlink:1102: hci0: hcon 000000001696f1fd hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2 hci_chan_list_flush:2780: hcon 000000001696f1fd hci_dev_put:1487: hci0 orig refcnt 21 hci_dev_put:1487: hci0 orig refcnt 20 hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c ... <no iso_* activity on sk/conn> ... iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557 BUG: kernel NULL pointer dereference, address: 0000000000000668 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth ==========================================================  L2CAP: ================================================================== hci_cmd_status_evt:4359: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3085: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585 hci_conn_unlink:1102: hci0: hcon ffff88800c999000 hci_chan_list_flush:2780: hcon ffff88800c999000 hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280 ... BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth] Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175  CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace:  <TASK>  dump_stack_lvl+0x5b/0x90  print_report+0xcf/0x670  ? __virt_addr_valid+0xf8/0x180  ? hci_send_acl+0x2d/0x540 [bluetooth]  kasan_report+0xa8/0xe0  ? hci_send_acl+0x2d/0x540 [bluetooth]  hci_send_acl+0x2d/0x540 [bluetooth]  ? __pfx___lock_acquire+0x10/0x10  l2cap_chan_send+0x1fd/0x1300 [bluetooth]  ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]  ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]  ? lock_release+0x1d5/0x3c0  ? mark_held_locks+0x1a/0x90  l2cap_sock_sendmsg+0x100/0x170 [bluetooth]  sock_write_iter+0x275/0x280  ? __pfx_sock_write_iter+0x10/0x10  ? __pfx___lock_acquire+0x10/0x10  do_iter_readv_writev+0x176/0x220  ? __pfx_do_iter_readv_writev+0x10/0x10  ? find_held_lock+0x83/0xa0  ? selinux_file_permission+0x13e/0x210  do_iter_write+0xda/0x340  vfs_writev+0x1b4/0x400  ? __pfx_vfs_writev+0x10/0x10  ? __seccomp_filter+0x112/0x750  ? populate_seccomp_data+0x182/0x220  ? __fget_light+0xdf/0x100  ? do_writev+0x19d/0x210  do_writev+0x19d/0x210  ? __pfx_do_writev+0x10/0x10  ? mark_held_locks+0x1a/0x90  do_syscall_64+0x60/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  ? do_syscall_64+0x6c/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7ff45cb23e64 Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: ---truncated---",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-07 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23262",
                        "url": "https://ubuntu.com/security/CVE-2026-23262",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  gve: Fix stats report corruption on queue count change  The driver and the NIC share a region in memory for stats reporting. The NIC calculates its offset into this region based on the total size of the stats region and the size of the NIC's stats.  When the number of queues is changed, the driver's stats region is resized. If the queue count is increased, the NIC can write past the end of the allocated stats region, causing memory corruption. If the queue count is decreased, there is a gap between the driver and NIC stats, leading to incorrect stats reporting.  This change fixes the issue by allocating stats region with maximum size, and the offset calculation for NIC stats is changed to match with the calculation of the NIC.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40082",
                        "url": "https://ubuntu.com/security/CVE-2025-40082",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()  BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186 Read of size 2 at addr ffff8880289ef218 by task syz.6.248/14290  CPU: 0 UID: 0 PID: 14290 Comm: syz.6.248 Not tainted 6.16.4 #1 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:  <TASK>  __dump_stack lib/dump_stack.c:94 [inline]  dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120  print_address_description mm/kasan/report.c:378 [inline]  print_report+0xca/0x5f0 mm/kasan/report.c:482  kasan_report+0xca/0x100 mm/kasan/report.c:595  hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186  hfsplus_listxattr+0x5b6/0xbd0 fs/hfsplus/xattr.c:738  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe0e9fae16d Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fe0eae67f98 EFLAGS: 00000246 ORIG_RAX: 00000000000000c3 RAX: ffffffffffffffda RBX: 00007fe0ea205fa0 RCX: 00007fe0e9fae16d RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000200000000000 RBP: 00007fe0ea0480f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fe0ea206038 R14: 00007fe0ea205fa0 R15: 00007fe0eae48000  </TASK>  Allocated by task 14290:  kasan_save_stack+0x24/0x50 mm/kasan/common.c:47  kasan_save_track+0x14/0x30 mm/kasan/common.c:68  poison_kmalloc_redzone mm/kasan/common.c:377 [inline]  __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394  kasan_kmalloc include/linux/kasan.h:260 [inline]  __do_kmalloc_node mm/slub.c:4333 [inline]  __kmalloc_noprof+0x219/0x540 mm/slub.c:4345  kmalloc_noprof include/linux/slab.h:909 [inline]  hfsplus_find_init+0x95/0x1f0 fs/hfsplus/bfind.c:21  hfsplus_listxattr+0x331/0xbd0 fs/hfsplus/xattr.c:697  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  When hfsplus_uni2asc is called from hfsplus_listxattr, it actually passes in a struct hfsplus_attr_unistr*. The size of the corresponding structure is different from that of hfsplus_unistr, so the previous fix (94458781aee6) is insufficient. The pointer on the unicode buffer is still going beyond the allocated memory.  This patch introduces two warpper functions hfsplus_uni2asc_xattr_str and hfsplus_uni2asc_str to process two unicode buffers, struct hfsplus_attr_unistr* and struct hfsplus_unistr* respectively. When ustrlen value is bigger than the allocated memory size, the ustrlen value is limited to an safe size.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-28 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37822",
                        "url": "https://ubuntu.com/security/CVE-2025-37822",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: uprobes: Add missing fence.i after building the XOL buffer  The XOL (execute out-of-line) buffer is used to single-step the replaced instruction(s) for uprobes. The RISC-V port was missing a proper fence.i (i$ flushing) after constructing the XOL buffer, which can result in incorrect execution of stale/broken instructions.  This was found running the BPF selftests \"test_progs: uprobe_autoattach, attach_probe\" on the Spacemit K1/X60, where the uprobes tests randomly blew up.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-08 07:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23190",
                        "url": "https://ubuntu.com/security/CVE-2026-23190",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ASoC: amd: fix memory leak in acp3x pdm dma ops",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23112",
                        "url": "https://ubuntu.com/security/CVE-2026-23112",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec  nvmet_tcp_build_pdu_iovec() could walk past cmd->req.sg when a PDU length or offset exceeds sg_cnt and then use bogus sg->length/offset values, leading to _copy_to_iter() GPF/KASAN. Guard sg_idx, remaining entries, and sg->length/offset before building the bvec.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23111",
                        "url": "https://ubuntu.com/security/CVE-2026-23111",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23180",
                        "url": "https://ubuntu.com/security/CVE-2026-23180",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: add bounds check for if_id in IRQ handler  The IRQ handler extracts if_id from the upper 16 bits of the hardware status register and uses it to index into ethsw->ports[] without validation. Since if_id can be any 16-bit value (0-65535) but the ports array is only allocated with sw_attr.num_ifs elements, this can lead to an out-of-bounds read potentially.  Add a bounds check before accessing the array, consistent with the existing validation in dpaa2_switch_rx().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23256",
                        "url": "https://ubuntu.com/security/CVE-2026-23256",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Compile tested only. Issue found using code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23257",
                        "url": "https://ubuntu.com/security/CVE-2026-23257",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Also, decrement i in the devlink_alloc failure path to point to the last successfully allocated index.  Compile tested only. Issue found using code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23258",
                        "url": "https://ubuntu.com/security/CVE-2026-23258",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Initialize netdev pointer before queue setup  In setup_nic_devices(), the netdev is allocated using alloc_etherdev_mq(). However, the pointer to this structure is stored in oct->props[i].netdev only after the calls to netif_set_real_num_rx_queues() and netif_set_real_num_tx_queues().  If either of these functions fails, setup_nic_devices() returns an error without freeing the allocated netdev. Since oct->props[i].netdev is still NULL at this point, the cleanup function liquidio_destroy_nic_device() will fail to find and free the netdev, resulting in a memory leak.  Fix this by initializing oct->props[i].netdev before calling the queue setup functions. This ensures that the netdev is properly accessible for cleanup in case of errors.  Compile tested only. Issue found using a prototype static analysis tool and code review.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-18 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23206",
                        "url": "https://ubuntu.com/security/CVE-2026-23206",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero  The driver allocates arrays for ports, FDBs, and filter blocks using kcalloc() with ethsw->sw_attr.num_ifs as the element count. When the device reports zero interfaces (either due to hardware configuration or firmware issues), kcalloc(0, ...) returns ZERO_SIZE_PTR (0x10) instead of NULL.  Later in dpaa2_switch_probe(), the NAPI initialization unconditionally accesses ethsw->ports[0]->netdev, which attempts to dereference ZERO_SIZE_PTR (address 0x10), resulting in a kernel panic.  Add a check to ensure num_ifs is greater than zero after retrieving device attributes. This prevents the zero-sized allocations and subsequent invalid pointer dereference.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23176",
                        "url": "https://ubuntu.com/security/CVE-2026-23176",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  platform/x86: toshiba_haps: Fix memory leaks in add/remove routines  toshiba_haps_add() leaks the haps object allocated by it if it returns an error after allocating that object successfully.  toshiba_haps_remove() does not free the object pointed to by toshiba_haps before clearing that pointer, so it becomes unreachable allocated memory.  Address these memory leaks by using devm_kzalloc() for allocating the memory in question.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23216",
                        "url": "https://ubuntu.com/security/CVE-2026-23216",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()  In iscsit_dec_conn_usage_count(), the function calls complete() while holding the conn->conn_usage_lock. As soon as complete() is invoked, the waiter (such as iscsit_close_connection()) may wake up and proceed to free the iscsit_conn structure.  If the waiter frees the memory before the current thread reaches spin_unlock_bh(), it results in a KASAN slab-use-after-free as the function attempts to release a lock within the already-freed connection structure.  Fix this by releasing the spinlock before calling complete().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-18 15:18:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23193",
                        "url": "https://ubuntu.com/security/CVE-2026-23193",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()  In iscsit_dec_session_usage_count(), the function calls complete() while holding the sess->session_usage_lock. Similar to the connection usage count logic, the waiter signaled by complete() (e.g., in the session release path) may wake up and free the iscsit_session structure immediately.  This creates a race condition where the current thread may attempt to execute spin_unlock_bh() on a session structure that has already been deallocated, resulting in a KASAN slab-use-after-free.  To resolve this, release the session_usage_lock before calling complete() to ensure all dereferences of the sess pointer are finished before the waiter is allowed to proceed with deallocation.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71220",
                        "url": "https://ubuntu.com/security/CVE-2025-71220",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe()  When ksmbd_iov_pin_rsp() fails, we should call ksmbd_session_rpc_close().",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71222",
                        "url": "https://ubuntu.com/security/CVE-2025-71222",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: wlcore: ensure skb headroom before skb_push  This avoids occasional skb_under_panic Oops from wl1271_tx_work. In this case, headroom is less than needed (typically 110 - 94 = 16 bytes).",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-71224",
                        "url": "https://ubuntu.com/security/CVE-2025-71224",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined  ieee80211_ocb_rx_no_sta() assumes a valid channel context, which is only present after JOIN_OCB.  RX may run before JOIN_OCB is executed, in which case the OCB interface is not operational. Skip RX peer handling when the interface is not joined to avoid warnings in the RX path.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-68214",
                        "url": "https://ubuntu.com/security/CVE-2025-68214",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  timers: Fix NULL function pointer race in timer_shutdown_sync()  There is a race condition between timer_shutdown_sync() and timer expiration that can lead to hitting a WARN_ON in expire_timers().  The issue occurs when timer_shutdown_sync() clears the timer function to NULL while the timer is still running on another CPU. The race scenario looks like this:  CPU0\t\t\t\t\tCPU1 \t\t\t\t\t<SOFTIRQ> \t\t\t\t\tlock_timer_base() \t\t\t\t\texpire_timers() \t\t\t\t\tbase->running_timer = timer; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t[call_timer_fn enter] \t\t\t\t\tmod_timer() \t\t\t\t\t... timer_shutdown_sync() lock_timer_base() // For now, will not detach the timer but only clear its function to NULL if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base() \t\t\t\t\t[call_timer_fn exit] \t\t\t\t\tlock_timer_base() \t\t\t\t\tbase->running_timer = NULL; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t... \t\t\t\t\t// Now timer is pending while its function set to NULL. \t\t\t\t\t// next timer trigger \t\t\t\t\t<SOFTIRQ> \t\t\t\t\texpire_timers() \t\t\t\t\tWARN_ON_ONCE(!fn) // hit \t\t\t\t\t... lock_timer_base() // Now timer will detach if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base()  The problem is that timer_shutdown_sync() clears the timer function regardless of whether the timer is currently running. This can leave a pending timer with a NULL function pointer, which triggers the WARN_ON_ONCE(!fn) check in expire_timers().  Fix this by only clearing the timer function when actually detaching the timer. If the timer is running, leave the function pointer intact, which is safe because the timer will be properly detached when it finishes running.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-16 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38201",
                        "url": "https://ubuntu.com/security/CVE-2025-38201",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX  Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset.  Similar to:    b541ba7d1f5a (\"netfilter: conntrack: clamp maximum hashtable size to INT_MAX\")",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-07-04 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23198",
                        "url": "https://ubuntu.com/security/CVE-2026-23198",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: Don't clobber irqfd routing type when deassigning irqfd  When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI.  Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information.  As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone.  As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace).  As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list).  And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information.  As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd.  Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity():    BUG: kernel NULL pointer dereference, address: 0000000000000018   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0   Oops: Oops: 0000 [#1] SMP   CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--5dddc257e6b2-irqfd #31 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:amd_iommu_update_ga+0x19/0xe0   Call Trace:    <TASK>    avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd]    __avic_vcpu_load+0xf4/0x130 [kvm_amd]    kvm_arch_vcpu_load+0x89/0x210 [kvm]    vcpu_load+0x30/0x40 [kvm]    kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm]    kvm_vcpu_ioctl+0x571/0x6a0 [kvm]    __se_sys_ioctl+0x6d/0xb0    do_syscall_64+0x6f/0x9d0    entry_SYSCALL_64_after_hwframe+0x4b/0x53   RIP: 0033:0x46893b     </TASK>   ---[ end trace 0000000000000000 ]---  If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment.    list_add corruption. next->prev should be prev (ffff8d474d5cd588),                        but was 0000000000000000. (next=ffff8d8658f86530).   ------------[ cut here ]------------   kernel BUG at lib/list_debug.c:31!   Oops: invalid opcode: 0000 [#1] SMP   CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--f19dc4d680ba-irqfd #28 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:__list_add_valid_or_report+0x97/0xc0   Call Trace:    <TASK>    avic_pi_update_irte+0x28e/0x2b0 [kvm_amd]    kvm_pi_update_irte+0xbf/0x190 [kvm]    kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm]    irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-14 17:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23272",
                        "url": "https://ubuntu.com/security/CVE-2026-23272",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: unconditionally bump set->nelems before insertion  In case that the set is full, a new element gets published then removed without waiting for the RCU grace period, while RCU reader can be walking over it already.  To address this issue, add the element transaction even if set is full, but toggle the set_full flag to report -ENFILE so the abort path safely unwinds the set to its previous state.  As for element updates, decrement set->nelems to restore it.  A simpler fix is to call synchronize_rcu() in the error path. However, with a large batch adding elements to already maxed-out set, this could cause noticeable slowdown of such batches.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-20 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31418",
                        "url": "https://ubuntu.com/security/CVE-2026-31418",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ipset: drop logically empty buckets in mtype_del  mtype_del() counts empty slots below n->pos in k, but it only drops the bucket when both n->pos and k are zero. This misses buckets whose live entries have all been removed while n->pos still points past deleted slots.  Treat a bucket as empty when all positions below n->pos are unused and release it directly instead of shrinking it further.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23278",
                        "url": "https://ubuntu.com/security/CVE-2026-23278",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: always walk all pending catchall elements  During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch.  If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate.  Otherwise, we get:  WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404  RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables]  [..]  __nft_set_elem_destroy+0x106/0x380 [nf_tables]  nf_tables_abort_release+0x348/0x8d0 [nf_tables]  nf_tables_abort+0xcf2/0x3ac0 [nf_tables]  nfnetlink_rcv_batch+0x9c9/0x20e0 [..]",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-03-20 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46300",
                        "url": "https://ubuntu.com/security/CVE-2026-46300",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: skbuff: preserve shared-frag marker during coalescing  skb_try_coalesce() can attach paged frags from @from to @to.  If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.  That breaks the invariant relied on by later in-place writers.  In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data().  If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags.  Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags.  The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-23 12:17:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-46333",
                        "url": "https://ubuntu.com/security/CVE-2026-46333",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ptrace: slightly saner 'get_dumpable()' logic  The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm.  And almost all users do in fact use it only for the case where the task has a mm pointer.  But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for threads that no longer have a VM (and maybe never did, like most kernel threads).  It's not what this flag was designed for, but it is what it is.  The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional \"drop capabilities\" model doesn't make any difference for this all.  Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached \"last dumpability\" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-15 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43500",
                        "url": "https://ubuntu.com/security/CVE-2026-43500",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present  The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true.  An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec().  Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true.  This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO).  The OOM/trace handling already in place is reused.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-11 08:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-43284",
                        "url": "https://ubuntu.com/security/CVE-2026-43284",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  xfrm: esp: avoid in-place decrypt on shared skb frags  MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs.  That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb.  Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path.  This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb->data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().",
                        "cve_priority": "high",
                        "cve_public_date": "2026-05-08 08:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31419",
                        "url": "https://ubuntu.com/security/CVE-2026-31419",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: bonding: fix use-after-free in bond_xmit_broadcast()  bond_xmit_broadcast() reuses the original skb for the last slave (determined by bond_is_last_slave()) and clones it for others. Concurrent slave enslave/release can mutate the slave list during RCU-protected iteration, changing which slave is \"last\" mid-loop. This causes the original skb to be double-consumed (double-freed).  Replace the racy bond_is_last_slave() check with a simple index comparison (i + 1 == slaves_count) against the pre-snapshot slave count taken via READ_ONCE() before the loop.  This preserves the zero-copy optimization for the last slave while making the \"last\" determination stable against concurrent list mutations.  The UAF can trigger the following crash:  ================================================================== BUG: KASAN: slab-use-after-free in skb_clone Read of size 8 at addr ffff888100ef8d40 by task exploit/147  CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY Call Trace:  <TASK>  dump_stack_lvl (lib/dump_stack.c:123)  print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)  kasan_report (mm/kasan/report.c:597)  skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)  bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)  bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)  dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)  __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)  ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)  ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)  ip6_output (net/ipv6/ip6_output.c:250)  ip6_send_skb (net/ipv6/ip6_output.c:1985)  udp_v6_send_skb (net/ipv6/udp.c:1442)  udpv6_sendmsg (net/ipv6/udp.c:1733)  __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)  __x64_sys_sendto (net/socket.c:2209)  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)  </TASK>  Allocated by task 147:  Freed by task 147:  The buggy address belongs to the object at ffff888100ef8c80  which belongs to the cache skbuff_head_cache of size 224 The buggy address is located 192 bytes inside of  freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)  Memory state around the buggy address:  ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc  ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc                                                     ^  ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb  ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31431",
                        "url": "https://ubuntu.com/security/CVE-2026-31431",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: algif_aead - Revert to operating out-of-place  This mostly reverts commit 72548b093ee3 except for the copying of the associated data.  There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings.  Get rid of all the complexity added for in-place operation and just copy the AD directly.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-04-22 09:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31533",
                        "url": "https://ubuntu.com/security/CVE-2026-31533",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption  The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 (\"net: tls: handle backlogging of crypto requests\"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry.  When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist.  The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record.  Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-23 18:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31504",
                        "url": "https://ubuntu.com/security/CVE-2026-31504",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: fix fanout UAF in packet_release() via NETDEV_UP race  `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.  The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.  This bug was found following an additional audit with Claude Code based on CVE-2025-38617.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-22 14:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2157253,
                    1786013,
                    2154219,
                    2153556,
                    2150730,
                    2149767,
                    2149767,
                    2149872,
                    2141536,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2147598,
                    2153962
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-45988",
                                "url": "https://ubuntu.com/security/CVE-2026-45988",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Fix re-decryption of RESPONSE packets  If a RESPONSE packet gets a temporary failure during processing, it may end up in a partially decrypted state - and then get requeued for a retry.  Fix this by just discarding the packet; we will send another CHALLENGE packet and thereby elicit a further response.  Similarly, discard an incoming CHALLENGE packet if we get an error whilst generating a RESPONSE; the server will send another CHALLENGE.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-27 14:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46195",
                                "url": "https://ubuntu.com/security/CVE-2026-46195",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: validate dacloffset before building DACL pointers  parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor.  On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths.  Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46135",
                                "url": "https://ubuntu.com/security/CVE-2026-46135",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: fix race between ICReq handling and queue teardown  nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown.  If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock.  If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue.  The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference.  Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started.  Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31402",
                                "url": "https://ubuntu.com/security/CVE-2026-31402",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nfsd: fix heap overflow in NFSv4.0 LOCK replay cache  The NFSv4.0 replay cache uses a fixed 112-byte inline buffer (rp_ibuf[NFSD4_REPLAY_ISIZE]) to store encoded operation responses. This size was calculated based on OPEN responses and does not account for LOCK denied responses, which include the conflicting lock owner as a variable-length field up to 1024 bytes (NFS4_OPAQUE_LIMIT).  When a LOCK operation is denied due to a conflict with an existing lock that has a large owner, nfsd4_encode_operation() copies the full encoded response into the undersized replay buffer via read_bytes_from_xdr_buf() with no bounds check. This results in a slab-out-of-bounds write of up to 944 bytes past the end of the buffer, corrupting adjacent heap memory.  This can be triggered remotely by an unauthenticated attacker with two cooperating NFSv4.0 clients: one sets a lock with a large owner string, then the other requests a conflicting lock to provoke the denial.  We could fix this by increasing NFSD4_REPLAY_ISIZE to allow for a full opaque, but that would increase the size of every stateowner, when most lockowners are not that large.  Instead, fix this by checking the encoded response length against NFSD4_REPLAY_ISIZE before copying into the replay buffer. If the response is too large, set rp_buflen to 0 to skip caching the replay payload. The status is still cached, and the client already received the correct response on the original request.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43071",
                                "url": "https://ubuntu.com/security/CVE-2026-43071",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dcache: Limit the minimal number of bucket to two  There is an OOB read problem on dentry_hashtable when user sets 'dhash_entries=1':   BUG: unable to handle page fault for address: ffff888b30b774b0   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   Oops: Oops: 0000 [#1] SMP PTI   RIP: 0010:__d_lookup+0x56/0x120    Call Trace:     d_lookup.cold+0x16/0x5d     lookup_dcache+0x27/0xf0     lookup_one_qstr_excl+0x2a/0x180     start_dirop+0x55/0xa0     simple_start_creating+0x8d/0xa0     debugfs_start_creating+0x8c/0x180     debugfs_create_dir+0x1d/0x1c0     pinctrl_init+0x6d/0x140     do_one_initcall+0x6d/0x3d0     kernel_init_freeable+0x39f/0x460     kernel_init+0x2a/0x260  There will be only one bucket in dentry_hashtable when dhash_entries is set as one, and d_hash_shift is calculated as 32 by dcache_init(). Then, following process will access more than one buckets(which memory region is not allocated) in dentry_hashtable:  d_lookup   b = d_hash(hash)     dentry_hashtable + ((u32)hashlen >> d_hash_shift)     // The C standard defines the behavior of right shift amounts     // exceeding the bit width of the operand as undefined. The     // result of '(u32)hashlen >> d_hash_shift' becomes 'hashlen',     // so 'b' will point to an unallocated memory region.   hlist_bl_for_each_entry_rcu(b)    hlist_bl_first_rcu(head)     h->first  // read OOB!  Fix it by limiting the minimal number of dentry_hashtable bucket to two, so that 'd_hash_shift' won't exceeds the bit width of type u32.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-05-05 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46119",
                                "url": "https://ubuntu.com/security/CVE-2026-46119",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix slab-out-of-bounds access in auth message processing  If a (potentially corrupted) message of type CEPH_MSG_AUTH_REPLY contains a positive value in its result field, it is treated as an error code by ceph_handle_auth_reply() and returned to handle_auth_reply(). Thereafter, an attempt is made to send the preallocated message of type CEPH_MSG_AUTH, where the returned value is interpreted as the size of the front segment to send. If the result value in the message is greater than the size of the memory buffer allocated for the front segment, an out-of-bounds access occurs, and the content of the memory region beyond this buffer is sent out.  This patch fixes the issue by treating only negative values in the result field as errors. Positive values are therefore treated as success in the same way as a zero value. Additionally, a BUG_ON is added to __send_prepared_auth_request() comparing the len parameter to front_alloc_len to prevent sending the message if it exceeds the bounds of the allocation and to make it easier to catch any logic flaws leading to this.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-28 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43501",
                                "url": "https://ubuntu.com/security/CVE-2026-43501",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: rpl: reserve mac_len headroom when recompressed SRH grows  ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps the next segment into ipv6_hdr->daddr, recompresses, then pulls the old header and pushes the new one plus the IPv6 header back.  The recompressed header can be larger than the received one when the swap reduces the common-prefix length the segments share with daddr (CmprI=0, CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).  pskb_expand_head() was gated on segments_left == 0, so on earlier segments the push consumed unchecked headroom.  Once skb_push() leaves fewer than skb->mac_len bytes in front of data, skb_mac_header_rebuild()'s call to:  \tskb_set_mac_header(skb, -skb->mac_len);  will store (data - head) - mac_len into the u16 mac_header field, which wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB past skb->head.  A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.  Fix this by expanding the head whenever the remaining room is less than the push size plus mac_len, and request that much extra so the rebuilt MAC header fits afterwards.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-21 13:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46043",
                                "url": "https://ubuntu.com/security/CVE-2026-46043",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv  rxe_rcv() currently checks only that the incoming packet is at least header_size(pkt) bytes long before payload_size() is used.  However, payload_size() subtracts both the attacker-controlled BTH pad field and RXE_ICRC_SIZE from pkt->paylen:    payload_size = pkt->paylen - offset[RXE_PAYLOAD] - bth_pad(pkt)                  - RXE_ICRC_SIZE  This means a short packet can still make payload_size() underflow even if it includes enough bytes for the fixed headers. Simply requiring header_size(pkt) + RXE_ICRC_SIZE is not sufficient either, because a packet with a forged non-zero BTH pad can still leave payload_size() negative and pass an underflowed value to later receive-path users.  Fix this by validating pkt->paylen against the full minimum length required by payload_size(): header_size(pkt) + bth_pad(pkt) + RXE_ICRC_SIZE.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-27 14:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43493",
                                "url": "https://ubuntu.com/security/CVE-2026-43493",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: pcrypt - Fix handling of MAY_BACKLOG requests  MAY_BACKLOG requests can return EBUSY.  Handle them by checking for that value and filtering out EINPROGRESS notifications.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-19 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31637",
                                "url": "https://ubuntu.com/security/CVE-2026-31637",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: reject undecryptable rxkad response tickets  rxkad_decrypt_ticket() decrypts the RXKAD response ticket and then parses the buffer as plaintext without checking whether crypto_skcipher_decrypt() succeeded.  A malformed RESPONSE can therefore use a non-block-aligned ticket length, make the decrypt operation fail, and still drive the ticket parser with attacker-controlled bytes.  Check the decrypt result and abort the connection with RXKADBADTICKET when ticket decryption fails.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31657",
                                "url": "https://ubuntu.com/security/CVE-2026-31657",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: hold claim backbone gateways by reference  batadv_bla_add_claim() can replace claim->backbone_gw and drop the old gateway's last reference while readers still follow the pointer.  The netlink claim dump path dereferences claim->backbone_gw->orig and takes claim->backbone_gw->crc_lock without pinning the underlying backbone gateway. batadv_bla_check_claim() still has the same naked pointer access pattern.  Reuse batadv_bla_claim_get_backbone_gw() in both readers so they operate on a stable gateway reference until the read-side work is complete. This keeps the dump and claim-check paths aligned with the lifetime rules introduced for the other BLA claim readers.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31685",
                                "url": "https://ubuntu.com/security/CVE-2026-31685",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ip6t_eui64: reject invalid MAC header for all packets  `eui64_mt6()` derives a modified EUI-64 from the Ethernet source address and compares it with the low 64 bits of the IPv6 source address.  The existing guard only rejects an invalid MAC header when `par->fragoff != 0`. For packets with `par->fragoff == 0`, `eui64_mt6()` can still reach `eth_hdr(skb)` even when the MAC header is not valid.  Fix this by removing the `par->fragoff != 0` condition so that packets with an invalid MAC header are rejected before accessing `eth_hdr(skb)`.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-25 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43117",
                                "url": "https://ubuntu.com/security/CVE-2026-43117",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  btrfs: tracepoints: get correct superblock from dentry in event btrfs_sync_file()  If overlay is used on top of btrfs, dentry->d_sb translates to overlay's super block and fsid assignment will lead to a crash.  Use file_inode(file)->i_sb to always get btrfs_sb.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-06 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43114",
                                "url": "https://ubuntu.com/security/CVE-2026-43114",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry  New test case fails unexpectedly when avx2 matching functions are used.  The test first loads a ranomly generated pipapo set with 'ipv4 . port' key, i.e.  nft -f foo.  This works.  Then, it reloads the set after a flush: (echo flush set t s; cat foo) | nft -f -  This is expected to work, because its the same set after all and it was already loaded once.  But with avx2, this fails: nft reports a clashing element.  The reported clash is of following form:      We successfully re-inserted       a . b       c . d  Then we try to insert a . d  avx2 finds the already existing a . d, which (due to 'flush set') is marked as invalid in the new generation.  It skips the element and moves to next.  Due to incorrect masking, the skip-step finds the next matching element *only considering the first field*,  i.e. we return the already reinserted \"a . b\", even though the last field is different and the entry should not have been matched.  No such error is reported for the generic c implementation (no avx2) or when the last field has to use the 'nft_pipapo_avx2_lookup_slow' fallback.  Bisection points to 7711f4bb4b36 (\"netfilter: nft_set_pipapo: fix range overlap detection\") but that fix merely uncovers this bug.  Before this commit, the wrong element is returned, but erronously reported as a full, identical duplicate.  The root-cause is too early return in the avx2 match functions. When we process the last field, we should continue to process data until the entire input size has been consumed to make sure no stale bits remain in the map.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-06 10:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31478",
                                "url": "https://ubuntu.com/security/CVE-2026-31478",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()  After this commit (e2b76ab8b5c9 \"ksmbd: add support for read compound\"), response buffer management was changed to use dynamic iov array. In the new design, smb2_calc_max_out_buf_len() expects the second argument (hdr2_len) to be the offset of ->Buffer field in the response structure, not a hardcoded magic number. Fix the remaining call sites to use the correct offsetof() value.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-22 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31668",
                                "url": "https://ubuntu.com/security/CVE-2026-31668",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  seg6: separate dst_cache for input and output paths in seg6 lwtunnel  The seg6 lwtunnel uses a single dst_cache per encap route, shared between seg6_input_core() and seg6_output_core(). These two paths can perform the post-encap SID lookup in different routing contexts (e.g., ip rules matching on the ingress interface, or VRF table separation). Whichever path runs first populates the cache, and the other reuses it blindly, bypassing its own lookup.  Fix this by splitting the cache into cache_input and cache_output, so each path maintains its own cached dst independently.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31659",
                                "url": "https://ubuntu.com/security/CVE-2026-31659",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  batman-adv: reject oversized global TT response buffers  batadv_tt_prepare_tvlv_global_data() builds the allocation length for a global TT response in 16-bit temporaries. When a remote originator advertises a large enough global TT, the TT payload length plus the VLAN header offset can exceed 65535 and wrap before kmalloc().  The full-table response path still uses the original TT payload length when it fills tt_change, so the wrapped allocation is too small and batadv_tt_prepare_tvlv_global_data() writes past the end of the heap object before the later packet-size check runs.  Fix this by rejecting TT responses whose TVLV value length cannot fit in the 16-bit TVLV payload length field.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31649",
                                "url": "https://ubuntu.com/security/CVE-2026-31649",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: stmmac: fix integer underflow in chain mode  The jumbo_frm() chain-mode implementation unconditionally computes      len = nopaged_len - bmax;  where nopaged_len = skb_headlen(skb) (linear bytes only) and bmax is BUF_SIZE_8KiB or BUF_SIZE_2KiB.  However, the caller stmmac_xmit() decides to invoke jumbo_frm() based on skb->len (total length including page fragments):      is_jumbo = stmmac_is_jumbo_frm(priv, skb->len, enh_desc);  When a packet has a small linear portion (nopaged_len <= bmax) but a large total length due to page fragments (skb->len > bmax), the subtraction wraps as an unsigned integer, producing a huge len value (~0xFFFFxxxx).  This causes the while (len != 0) loop to execute hundreds of thousands of iterations, passing skb->data + bmax * i pointers far beyond the skb buffer to dma_map_single().  On IOMMU-less SoCs (the typical deployment for stmmac), this maps arbitrary kernel memory to the DMA engine, constituting a kernel memory disclosure and potential memory corruption from hardware.  Fix this by introducing a buf_len local variable clamped to min(nopaged_len, bmax).  Computing len = nopaged_len - buf_len is then always safe: it is zero when the linear portion fits within a single descriptor, causing the while (len != 0) loop to be skipped naturally, and the fragment loop in stmmac_xmit() handles page fragments afterward.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31669",
                                "url": "https://ubuntu.com/security/CVE-2026-31669",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mptcp: fix slab-use-after-free in __inet_lookup_established  The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register().  However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently.  This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established.  Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43011",
                                "url": "https://ubuntu.com/security/CVE-2026-43011",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/x25: Fix potential double free of skb  When alloc_skb fails in x25_queue_rx_frame it calls kfree_skb(skb) at line 48 and returns 1 (error). This error propagates back through the call chain:  x25_queue_rx_frame returns 1     |     v x25_state3_machine receives the return value 1 and takes the else branch at line 278, setting queued=0 and returning 0     |     v x25_process_rx_frame returns queued=0     |     v x25_backlog_rcv at line 452 sees queued=0 and calls kfree_skb(skb) again  This would free the same skb twice. Looking at x25_backlog_rcv:  net/x25/x25_in.c:x25_backlog_rcv() {     ...     queued = x25_process_rx_frame(sk, skb);     ...     if (!queued)         kfree_skb(skb); }",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43037",
                                "url": "https://ubuntu.com/security/CVE-2026-43037",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ip6_tunnel: clear skb2->cb[] in ip4ip6_err()  Oskar Kjos reported the following problem.  ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr value. __ip_options_echo() then reads optlen from attacker-controlled packet data at sptr[rr+1] and copies that many bytes into dopt->__data, a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).  To fix this we clear skb2->cb[], as suggested by Oskar Kjos.  Also add minimal IPv4 header validation (version == 4, ihl >= 5).",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43038",
                                "url": "https://ubuntu.com/security/CVE-2026-43038",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()  Sashiko AI-review observed:    In ip6_err_gen_icmpv6_unreach(), the skb is an outer IPv4 ICMP error packet   where its cb contains an IPv4 inet_skb_parm. When skb is cloned into skb2   and passed to icmp6_send(), it uses IP6CB(skb2).    IP6CB interprets the IPv4 inet_skb_parm as an inet6_skb_parm. The cipso   offset in inet_skb_parm.opt directly overlaps with dsthao in inet6_skb_parm   at offset 18.    If an attacker sends a forged ICMPv4 error with a CIPSO IP option, dsthao   would be a non-zero offset. Inside icmp6_send(), mip6_addr_swap() is called   and uses ipv6_find_tlv(skb, opt->dsthao, IPV6_TLV_HAO).    This would scan the inner, attacker-controlled IPv6 packet starting at that   offset, potentially returning a fake TLV without checking if the remaining   packet length can hold the full 18-byte struct ipv6_destopt_hao.    Could mip6_addr_swap() then perform a 16-byte swap that extends past the end   of the packet data into skb_shared_info?    Should the cb array also be cleared in ip6_err_gen_icmpv6_unreach() and   ip6ip6_err() to prevent this?  This patch implements the first suggestion.  I am not sure if ip6ip6_err() needs to be changed. A separate patch would be better anyway.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-01 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31682",
                                "url": "https://ubuntu.com/security/CVE-2026-31682",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  bridge: br_nd_send: linearize skb before parsing ND options  br_nd_send() parses neighbour discovery options from ns->opt[] and assumes that these options are in the linear part of request.  Its callers only guarantee that the ICMPv6 header and target address are available, so the option area can still be non-linear. Parsing ns->opt[] in that case can access data past the linear buffer.  Linearize request before option parsing and derive ns from the linear network header.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-25 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23450",
                                "url": "https://ubuntu.com/security/CVE-2026-23450",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()  Syzkaller reported a panic in smc_tcp_syn_recv_sock() [1].  smc_tcp_syn_recv_sock() is called in the TCP receive path (softirq) via icsk_af_ops->syn_recv_sock on the clcsock (TCP listening socket). It reads sk_user_data to get the smc_sock pointer. However, when the SMC listen socket is being closed concurrently, smc_close_active() sets clcsock->sk_user_data to NULL under sk_callback_lock, and then the smc_sock itself can be freed via sock_put() in smc_release().  This leads to two issues:  1) NULL pointer dereference: sk_user_data is NULL when    accessed. 2) Use-after-free: sk_user_data is read as non-NULL, but the    smc_sock is freed before its fields (e.g., queued_smc_hs,    ori_af_ops) are accessed.  The race window looks like this (the syzkaller crash [1] triggers via the SYN cookie path: tcp_get_cookie_sock() -> smc_tcp_syn_recv_sock(), but the normal tcp_check_req() path has the same race):    CPU A (softirq)              CPU B (process ctx)    tcp_v4_rcv()     TCP_NEW_SYN_RECV:     sk = req->rsk_listener     sock_hold(sk)     /* No lock on listener */                                smc_close_active():                                  write_lock_bh(cb_lock)                                  sk_user_data = NULL                                  write_unlock_bh(cb_lock)                                  ...                                  smc_clcsock_release()                                  sock_put(smc->sk) x2                                    -> smc_sock freed!     tcp_check_req()       smc_tcp_syn_recv_sock():         smc = user_data(sk)           -> NULL or dangling         smc->queued_smc_hs           -> crash!  Note that the clcsock and smc_sock are two independent objects with separate refcounts. TCP stack holds a reference on the clcsock, which keeps it alive, but this does NOT prevent the smc_sock from being freed.  Fix this by using RCU and refcount_inc_not_zero() to safely access smc_sock. Since smc_tcp_syn_recv_sock() is called in the TCP three-way handshake path, taking read_lock_bh on sk_callback_lock is too heavy and would not survive a SYN flood attack. Using rcu_read_lock() is much more lightweight.  - Set SOCK_RCU_FREE on the SMC listen socket so that   smc_sock freeing is deferred until after the RCU grace   period. This guarantees the memory is still valid when   accessed inside rcu_read_lock(). - Use rcu_read_lock() to protect reading sk_user_data. - Use refcount_inc_not_zero(&smc->sk.sk_refcnt) to pin the   smc_sock. If the refcount has already reached zero (close   path completed), it returns false and we bail out safely.  Note: smc_hs_congested() has a similar lockless read of sk_user_data without rcu_read_lock(), but it only checks for NULL and accesses the global smc_hs_wq, never dereferencing any smc_sock field, so it is not affected.  Reproducer was verified with mdelay injection and smc_run, the issue no longer occurs with this patch applied.  [1] https://syzkaller.appspot.com/bug?extid=827ae2bfb3a3529333e9",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23428",
                                "url": "https://ubuntu.com/security/CVE-2026-23428",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free of share_conf in compound request  smb2_get_ksmbd_tcon() reuses work->tcon in compound requests without validating tcon->t_state. ksmbd_tree_conn_lookup() checks t_state == TREE_CONNECTED on the initial lookup path, but the compound reuse path bypasses this check entirely.  If a prior command in the compound (SMB2_TREE_DISCONNECT) sets t_state to TREE_DISCONNECTED and frees share_conf via ksmbd_share_config_put(), subsequent commands dereference the freed share_conf through work->tcon->share_conf.  KASAN report:  [    4.144653] ================================================================== [    4.145059] BUG: KASAN: slab-use-after-free in smb2_write+0xc74/0xe70 [    4.145415] Read of size 4 at addr ffff88810430c194 by task kworker/1:1/44 [    4.145772] [    4.145867] CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted 7.0.0-rc3+ #60 PREEMPTLAZY [    4.145871] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [    4.145875] Workqueue: ksmbd-io handle_ksmbd_work [    4.145888] Call Trace: [    4.145892]  <TASK> [    4.145894]  dump_stack_lvl+0x64/0x80 [    4.145910]  print_report+0xce/0x660 [    4.145919]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10 [    4.145928]  ? smb2_write+0xc74/0xe70 [    4.145931]  kasan_report+0xce/0x100 [    4.145934]  ? smb2_write+0xc74/0xe70 [    4.145937]  smb2_write+0xc74/0xe70 [    4.145939]  ? __pfx_smb2_write+0x10/0x10 [    4.145942]  ? _raw_spin_unlock+0xe/0x30 [    4.145945]  ? ksmbd_smb2_check_message+0xeb2/0x24c0 [    4.145948]  ? smb2_tree_disconnect+0x31c/0x480 [    4.145951]  handle_ksmbd_work+0x40f/0x1080 [    4.145953]  process_one_work+0x5fa/0xef0 [    4.145962]  ? assign_work+0x122/0x3e0 [    4.145964]  worker_thread+0x54b/0xf70 [    4.145967]  ? __pfx_worker_thread+0x10/0x10 [    4.145970]  kthread+0x346/0x470 [    4.145976]  ? recalc_sigpending+0x19b/0x230 [    4.145980]  ? __pfx_kthread+0x10/0x10 [    4.145984]  ret_from_fork+0x4fb/0x6c0 [    4.145992]  ? __pfx_ret_from_fork+0x10/0x10 [    4.145995]  ? __switch_to+0x36c/0xbe0 [    4.145999]  ? __pfx_kthread+0x10/0x10 [    4.146003]  ret_from_fork_asm+0x1a/0x30 [    4.146013]  </TASK> [    4.146014] [    4.149858] Allocated by task 44: [    4.149953]  kasan_save_stack+0x33/0x60 [    4.150061]  kasan_save_track+0x14/0x30 [    4.150169]  __kasan_kmalloc+0x8f/0xa0 [    4.150274]  ksmbd_share_config_get+0x1dd/0xdd0 [    4.150401]  ksmbd_tree_conn_connect+0x7e/0x600 [    4.150529]  smb2_tree_connect+0x2e6/0x1000 [    4.150645]  handle_ksmbd_work+0x40f/0x1080 [    4.150761]  process_one_work+0x5fa/0xef0 [    4.150873]  worker_thread+0x54b/0xf70 [    4.150978]  kthread+0x346/0x470 [    4.151071]  ret_from_fork+0x4fb/0x6c0 [    4.151176]  ret_from_fork_asm+0x1a/0x30 [    4.151286] [    4.151332] Freed by task 44: [    4.151418]  kasan_save_stack+0x33/0x60 [    4.151526]  kasan_save_track+0x14/0x30 [    4.151634]  kasan_save_free_info+0x3b/0x60 [    4.151751]  __kasan_slab_free+0x43/0x70 [    4.151861]  kfree+0x1ca/0x430 [    4.151952]  __ksmbd_tree_conn_disconnect+0xc8/0x190 [    4.152088]  smb2_tree_disconnect+0x1cd/0x480 [    4.152211]  handle_ksmbd_work+0x40f/0x1080 [    4.152326]  process_one_work+0x5fa/0xef0 [    4.152438]  worker_thread+0x54b/0xf70 [    4.152545]  kthread+0x346/0x470 [    4.152638]  ret_from_fork+0x4fb/0x6c0 [    4.152743]  ret_from_fork_asm+0x1a/0x30 [    4.152853] [    4.152900] The buggy address belongs to the object at ffff88810430c180 [    4.152900]  which belongs to the cache kmalloc-96 of size 96 [    4.153226] The buggy address is located 20 bytes inside of [    4.153226]  freed 96-byte region [ffff88810430c180, ffff88810430c1e0) [    4.153549] [    4.153596] The buggy address belongs to the physical page: [    4.153750] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff88810430ce80 pfn:0x10430c [    4.154000] flags: 0x ---truncated---",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23455",
                                "url": "https://ubuntu.com/security/CVE-2026-23455",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()  In DecodeQ931(), the UserUserIE code path reads a 16-bit length from the packet, then decrements it by 1 to skip the protocol discriminator byte before passing it to DecodeH323_UserInformation(). If the encoded length is 0, the decrement wraps to -1, which is then passed as a large value to the decoder, leading to an out-of-bounds read.  Add a check to ensure len is positive after the decrement.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-03 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43186",
                                "url": "https://ubuntu.com/security/CVE-2026-43186",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()  On the receive path, __ioam6_fill_trace_data() uses trace->nodelen to decide how much data to write for each node. It trusts this field as-is from the incoming packet, with no consistency check against trace->type (the 24-bit field that tells which data items are present). A crafted packet can set nodelen=0 while setting type bits 0-21, causing the function to write ~100 bytes past the allocated region (into skb_shared_info), which corrupts adjacent heap memory and leads to a kernel panic.  Add a shared helper ioam6_trace_compute_nodelen() in ioam6.c to derive the expected nodelen from the type field, and use it:    - in ioam6_iptunnel.c (send path, existing validation) to replace     the open-coded computation;   - in exthdrs.c (receive path, ipv6_hop_ioam) to drop packets whose     nodelen is inconsistent with the type field, before any data is     written.  Per RFC 9197, bits 12-21 are each short (4-octet) fields, so they are included in IOAM6_MASK_SHORT_FIELDS (changed from 0xff100000 to 0xff1ffc00).",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-06 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43185",
                                "url": "https://ubuntu.com/security/CVE-2026-43185",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix signededness bug in smb_direct_prepare_negotiation()  smb_direct_prepare_negotiation() casts an unsigned __u32 value from sp->max_recv_size and req->preferred_send_size to a signed int before computing min_t(int, ...). A maliciously provided preferred_send_size of 0x80000000 will return as smaller than max_recv_size, and then be used to set the maximum allowed alowed receive size for the next message.  By sending a second message with a large value (>1420 bytes) the attacker can then achieve a heap buffer overflow.  This fix replaces min_t(int, ...) with min_t(u32)",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-06 12:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43341",
                                "url": "https://ubuntu.com/security/CVE-2026-43341",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/ipv6: ioam6: prevent schema length wraparound in trace fill  ioam6_fill_trace_data() stores the schema contribution to the trace length in a u8. With bit 22 enabled and the largest schema payload, sclen becomes 1 + 1020 / 4, wraps from 256 to 0, and bypasses the remaining-space check. __ioam6_fill_trace_data() then positions the write cursor without reserving the schema area but still copies the 4-byte schema header and the full schema payload, overrunning the trace buffer.  Keep sclen in an unsigned int so the remaining-space check and the write cursor calculation both see the full schema length.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31607",
                                "url": "https://ubuntu.com/security/CVE-2026-31607",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  usbip: validate number_of_packets in usbip_pack_ret_submit()  When a USB/IP client receives a RET_SUBMIT response, usbip_pack_ret_submit() unconditionally overwrites urb->number_of_packets from the network PDU. This value is subsequently used as the loop bound in usbip_recv_iso() and usbip_pad_iso() to iterate over urb->iso_frame_desc[], a flexible array whose size was fixed at URB allocation time based on the *original* number_of_packets from the CMD_SUBMIT.  A malicious USB/IP server can set number_of_packets in the response to a value larger than what was originally submitted, causing a heap out-of-bounds write when usbip_recv_iso() writes to urb->iso_frame_desc[i] beyond the allocated region.  KASAN confirmed this with kernel 7.0.0-rc5:    BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640   Write of size 4 at addr ffff888106351d40 by task vhci_rx/69    The buggy address is located 0 bytes to the right of    allocated 320-byte region [ffff888106351c00, ffff888106351d40)  The server side (stub_rx.c) and gadget side (vudc_rx.c) already validate number_of_packets in the CMD_SUBMIT path since commits c6688ef9f297 (\"usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input\") and b78d830f0049 (\"usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input\"). The server side validates against USBIP_MAX_ISO_PACKETS because no URB exists yet at that point. On the client side we have the original URB, so we can use the tighter bound: the response must not exceed the original number_of_packets.  This mirrors the existing validation of actual_length against transfer_buffer_length in usbip_recv_xbuff(), which checks the response value against the original allocation size.  Kelvin Mbogo's series (\"usb: usbip: fix integer overflow in usbip_recv_iso()\", v2) hardens the receive-side functions themselves; this patch complements that work by catching the bad value at its source -- in usbip_pack_ret_submit() before the overwrite -- and using the tighter per-URB allocation bound rather than the global USBIP_MAX_ISO_PACKETS limit.  Fix this by checking rpdu->number_of_packets against urb->number_of_packets in usbip_pack_ret_submit() before the overwrite. On violation, clamp to zero so that usbip_recv_iso() and usbip_pad_iso() safely return early.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-24 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43383",
                                "url": "https://ubuntu.com/security/CVE-2026-43383",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tcp-md5: Fix MAC comparison to be constant-time  To prevent timing attacks, MACs need to be compared in constant time.  Use the appropriate helper function for this.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-68263",
                                "url": "https://ubuntu.com/security/CVE-2025-68263",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: ipc: fix use-after-free in ipc_msg_send_request  ipc_msg_send_request() waits for a generic netlink reply using an ipc_msg_table_entry on the stack. The generic netlink handler (handle_generic_event()/handle_response()) fills entry->response under ipc_msg_table_lock, but ipc_msg_send_request() used to validate and free entry->response without holding the same lock.  Under high concurrency this allows a race where handle_response() is copying data into entry->response while ipc_msg_send_request() has just freed it, leading to a slab-use-after-free reported by KASAN in handle_generic_event():    BUG: KASAN: slab-use-after-free in handle_generic_event+0x3c4/0x5f0 [ksmbd]   Write of size 12 at addr ffff888198ee6e20 by task pool/109349   ...   Freed by task:     kvfree     ipc_msg_send_request [ksmbd]     ksmbd_rpc_open -> ksmbd_session_rpc_open [ksmbd]  Fix by: - Taking ipc_msg_table_lock in ipc_msg_send_request() while validating   entry->response, freeing it when invalid, and removing the entry from   ipc_msg_table. - Returning the final entry->response pointer to the caller only after   the hash entry is removed under the lock. - Returning NULL in the error path, preserving the original API   semantics.  This makes all accesses to entry->response consistent with handle_response(), which already updates and fills the response buffer under ipc_msg_table_lock, and closes the race that allowed the UAF.",
                                "cve_priority": "critical",
                                "cve_public_date": "2025-12-16 15:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46243",
                                "url": "https://ubuntu.com/security/CVE-2026-46243",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb: client: reject userspace cifs.spnego descriptions  cifs.spnego key descriptions contain authority-bearing fields such as pid, uid, creduid, and upcall_target that cifs.upcall treats as kernel-originating inputs. However, userspace can also create keys of this type through request_key(2) or add_key(2), allowing those fields to be supplied without CIFS origin.  Only accept cifs.spnego descriptions while CIFS is using its private spnego_cred to request the key.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-06-01 17:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43414",
                                "url": "https://ubuntu.com/security/CVE-2026-43414",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: qla2xxx: Completely fix fcport double free  In qla24xx_els_dcmd_iocb() sp->free is set to qla2x00_els_dcmd_sp_free(). When an error happens, this function is called by qla2x00_sp_release(), when kref_put() releases the first and the last reference.  qla2x00_els_dcmd_sp_free() frees fcport by calling qla2x00_free_fcport(). Doing it one more time after kref_put() is a bad idea.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43407",
                                "url": "https://ubuntu.com/security/CVE-2026-43407",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()  This patch fixes an out-of-bounds access in ceph_handle_auth_reply() that can be triggered by a message of type CEPH_MSG_AUTH_REPLY. In ceph_handle_auth_reply(), the value of the payload_len field of such a message is stored in a variable of type int. A value greater than INT_MAX leads to an integer overflow and is interpreted as a negative value. This leads to decrementing the pointer address by this value and subsequently accessing it because ceph_decode_need() only checks that the memory access does not exceed the end address of the allocation.  This patch fixes the issue by changing the data type of payload_len to u32. Additionally, the data type of result_msg_len is changed to u32, as it is also a variable holding a non-negative length.  Also, an additional layer of sanity checks is introduced, ensuring that directly after reading it from the message, payload_len and result_msg_len are not greater than the overall segment length.  BUG: KASAN: slab-out-of-bounds in ceph_handle_auth_reply+0x642/0x7a0 [libceph] Read of size 4 at addr ffff88811404df14 by task kworker/20:1/262  CPU: 20 UID: 0 PID: 262 Comm: kworker/20:1 Not tainted 6.19.2 #5 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: ceph-msgr ceph_con_workfn [libceph] Call Trace:  <TASK>  dump_stack_lvl+0x76/0xa0  print_report+0xd1/0x620  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? kasan_complete_mode_report_info+0x72/0x210  kasan_report+0xe7/0x130  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  ? ceph_handle_auth_reply+0x642/0x7a0 [libceph]  __asan_report_load_n_noabort+0xf/0x20  ceph_handle_auth_reply+0x642/0x7a0 [libceph]  mon_dispatch+0x973/0x23d0 [libceph]  ? apparmor_socket_recvmsg+0x6b/0xa0  ? __pfx_mon_dispatch+0x10/0x10 [libceph]  ? __kasan_check_write+0x14/0x30i  ? mutex_unlock+0x7f/0xd0  ? __pfx_mutex_unlock+0x10/0x10  ? __pfx_do_recvmsg+0x10/0x10 [libceph]  ceph_con_process_message+0x1f1/0x650 [libceph]  process_message+0x1e/0x450 [libceph]  ceph_con_v2_try_read+0x2e48/0x6c80 [libceph]  ? __pfx_ceph_con_v2_try_read+0x10/0x10 [libceph]  ? save_fpregs_to_fpstate+0xb0/0x230  ? raw_spin_rq_unlock+0x17/0xa0  ? finish_task_switch.isra.0+0x13b/0x760  ? __switch_to+0x385/0xda0  ? __kasan_check_write+0x14/0x30  ? mutex_lock+0x8d/0xe0  ? __pfx_mutex_lock+0x10/0x10  ceph_con_workfn+0x248/0x10c0 [libceph]  process_one_work+0x629/0xf80  ? __kasan_check_write+0x14/0x30  worker_thread+0x87f/0x1570  ? __pfx__raw_spin_lock_irqsave+0x10/0x10  ? __pfx_try_to_wake_up+0x10/0x10  ? kasan_print_address_stack_frame+0x1f7/0x280  ? __pfx_worker_thread+0x10/0x10  kthread+0x396/0x830  ? __pfx__raw_spin_lock_irq+0x10/0x10  ? __pfx_kthread+0x10/0x10  ? __kasan_check_write+0x14/0x30  ? recalc_sigpending+0x180/0x210  ? __pfx_kthread+0x10/0x10  ret_from_fork+0x3f7/0x610  ? __pfx_ret_from_fork+0x10/0x10  ? __switch_to+0x385/0xda0  ? __pfx_kthread+0x10/0x10  ret_from_fork_asm+0x1a/0x30  </TASK>  [ idryomov: replace if statements with ceph_decode_need() for   payload_len and result_msg_len ]",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43406",
                                "url": "https://ubuntu.com/security/CVE-2026-43406",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: prevent potential out-of-bounds reads in process_message_header()  If the message frame is (maliciously) corrupted in a way that the length of the control segment ends up being less than the size of the message header or a different frame is made to look like a message frame, out-of-bounds reads may ensue in process_message_header().  Perform an explicit bounds check before decoding the message header.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 15:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43304",
                                "url": "https://ubuntu.com/security/CVE-2026-43304",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  libceph: define and enforce CEPH_MAX_KEY_LEN  When decoding the key, verify that the key material would fit into a fixed-size buffer in process_auth_done() and generally has a sane length.  The new CEPH_MAX_KEY_LEN check replaces the existing check for a key with no key material which is a) not universal since CEPH_CRYPTO_NONE has to be excluded and b) doesn't provide much value since a smaller than needed key is just as invalid as no key -- this has to be handled elsewhere anyway.",
                                "cve_priority": "critical",
                                "cve_public_date": "2026-05-08 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37924",
                                "url": "https://ubuntu.com/security/CVE-2025-37924",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix use-after-free in kerberos authentication  Setting sess->user = NULL was introduced to fix the dangling pointer created by ksmbd_free_user. However, it is possible another thread could be operating on the session and make use of sess->user after it has been passed to ksmbd_free_user but before sess->user is set to NULL.",
                                "cve_priority": "high",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37778",
                                "url": "https://ubuntu.com/security/CVE-2025-37778",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: Fix dangling pointer in krb_authenticate  krb_authenticate frees sess->user and does not set the pointer to NULL. It calls ksmbd_krb5_authenticate to reinitialise sess->user but that function may return without doing so. If that happens then smb2_sess_setup, which calls krb_authenticate, will be accessing free'd memory when it later uses sess->user.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-01 14:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux: 5.15.0-185.195 -proposed tracker (LP: #2157253)",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] update annotations scripts",
                            "    - [Packaging] resync retpoline extraction",
                            "",
                            "  * CVE-2026-45988",
                            "    - rxrpc: Fix re-decryption of RESPONSE packets",
                            "",
                            "  * CVE-2026-46195",
                            "    - smb: client: validate dacloffset before building DACL pointers",
                            "",
                            "  * CVE-2026-46135",
                            "    - nvmet-tcp: fix race between ICReq handling and queue teardown",
                            "",
                            "  * CVE-2026-31402",
                            "    - nfsd: fix heap overflow in NFSv4.0 LOCK replay cache",
                            "",
                            "  * CVE-2026-43071",
                            "    - dcache: Limit the minimal number of bucket to two",
                            "",
                            "  * CVE-2026-46119",
                            "    - libceph: Fix slab-out-of-bounds access in auth message processing",
                            "",
                            "  * CVE-2026-43501",
                            "    - ipv6: rpl: reserve mac_len headroom when recompressed SRH grows",
                            "",
                            "  * CVE-2026-46043",
                            "    - RDMA/rxe: Validate pad and ICRC before payload_size() in rxe_rcv",
                            "",
                            "  * CVE-2026-43493",
                            "    - crypto: pcrypt - Fix handling of MAY_BACKLOG requests",
                            "",
                            "  * CVE-2026-31637",
                            "    - rxrpc: reject undecryptable rxkad response tickets",
                            "",
                            "  * CVE-2026-31657",
                            "    - batman-adv: hold claim backbone gateways by reference",
                            "",
                            "  * CVE-2026-31685",
                            "    - netfilter: ip6t_eui64: reject invalid MAC header for all packets",
                            "",
                            "  * CVE-2026-43117",
                            "    - btrfs: tracepoints: get correct superblock from dentry in event",
                            "      btrfs_sync_file()",
                            "",
                            "  * CVE-2026-43114",
                            "    - netfilter: nft_set_pipapo_avx2: don't return non-matching entry on",
                            "      expiry",
                            "",
                            "  * CVE-2026-31478",
                            "    - ksmbd: replace hardcoded hdr2_len with offsetof() in",
                            "      smb2_calc_max_out_buf_len()",
                            "",
                            "  * CVE-2026-31668",
                            "    - seg6: separate dst_cache for input and output paths in seg6 lwtunnel",
                            "",
                            "  * CVE-2026-31659",
                            "    - batman-adv: reject oversized global TT response buffers",
                            "",
                            "  * CVE-2026-31649",
                            "    - net: stmmac: fix integer underflow in chain mode",
                            "",
                            "  * CVE-2026-31669",
                            "    - mptcp: fix slab-use-after-free in __inet_lookup_established",
                            "",
                            "  * CVE-2026-43011",
                            "    - net/x25: Fix potential double free of skb",
                            "",
                            "  * CVE-2026-43037",
                            "    - ip6_tunnel: clear skb2->cb[] in ip4ip6_err()",
                            "",
                            "  * CVE-2026-43038",
                            "    - ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()",
                            "",
                            "  * CVE-2026-31682",
                            "    - bridge: br_nd_send: linearize skb before parsing ND options",
                            "",
                            "  * CVE-2026-23450",
                            "    - net/smc: Only save the original clcsock callback functions",
                            "    - net/smc: Fix slab-out-of-bounds issue in fallback",
                            "    - net/smc: fix NULL dereference and UAF in smc_tcp_syn_recv_sock()",
                            "",
                            "  * CVE-2026-23428",
                            "    - ksmbd: fix use-after-free of share_conf in compound request",
                            "",
                            "  * CVE-2026-23455",
                            "    - netfilter: nf_conntrack_h323: check for zero length in DecodeQ931()",
                            "",
                            "  * CVE-2026-43186",
                            "    - ipv6: ioam: fix heap buffer overflow in __ioam6_fill_trace_data()",
                            "",
                            "  * CVE-2026-43185",
                            "    - ksmbd: fix signededness bug in smb_direct_prepare_negotiation()",
                            "",
                            "  * CVE-2026-43341",
                            "    - net/ipv6: ioam6: prevent schema length wraparound in trace fill",
                            "",
                            "  * CVE-2026-31607",
                            "    - usbip: validate number_of_packets in usbip_pack_ret_submit()",
                            "",
                            "  * CVE-2026-43383",
                            "    - net/tcp-md5: Fix MAC comparison to be constant-time",
                            "",
                            "  * CVE-2025-68263",
                            "    - ksmbd: ipc: fix use-after-free in ipc_msg_send_request",
                            "",
                            "  * CVE-2026-46243",
                            "    - smb: client: reject userspace cifs.spnego descriptions",
                            "",
                            "  * CVE-2026-43414",
                            "    - scsi: qla2xxx: Completely fix fcport double free",
                            "",
                            "  * CVE-2026-43407",
                            "    - libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()",
                            "",
                            "  * CVE-2026-43406",
                            "    - libceph: prevent potential out-of-bounds reads in",
                            "      process_message_header()",
                            "",
                            "  * CVE-2026-43304",
                            "    - libceph: define and enforce CEPH_MAX_KEY_LEN",
                            "",
                            "  * CVE-2025-37924",
                            "    - ksmbd: fix use-after-free in kerberos authentication",
                            "",
                            "  * CVE-2025-37778",
                            "    - ksmbd: Fix dangling pointer in krb_authenticate",
                            ""
                        ],
                        "package": "linux",
                        "version": "5.15.0-185.195",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2157253,
                            1786013
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 19 Jun 2026 17:54:32 +0200"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2022-48816",
                                "url": "https://ubuntu.com/security/CVE-2022-48816",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  SUNRPC: lock against ->sock changing during sysfs read  ->sock can be set to NULL asynchronously unless ->recv_mutex is held. So it is important to hold that mutex.  Otherwise a sysfs read can trigger an oops. Commit 17f09d3f619a (\"SUNRPC: Check if the xprt is connected before handling sysfs reads\") appears to attempt to fix this problem, but it only narrows the race window.",
                                "cve_priority": "medium",
                                "cve_public_date": "2024-07-16 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23182",
                                "url": "https://ubuntu.com/security/CVE-2026-23182",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra: Fix a memory leak in tegra_slink_probe()  In tegra_slink_probe(), when platform_get_irq() fails, it directly returns from the function with an error code, which causes a memory leak.  Replace it with a goto label to ensure proper cleanup.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23202",
                                "url": "https://ubuntu.com/security/CVE-2026-23202",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer  The curr_xfer field is read by the IRQ handler without holding the lock to check if a transfer is in progress. When clearing curr_xfer in the combined sequence transfer loop, protect it with the spinlock to prevent a race with the interrupt handler.  Protect the curr_xfer clearing at the exit path of tegra_qspi_combined_seq_xfer() with the spinlock to prevent a race with the interrupt handler that reads this field.  Without this protection, the IRQ handler could read a partially updated curr_xfer value, leading to NULL pointer dereference or use-after-free.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71089",
                                "url": "https://ubuntu.com/security/CVE-2025-71089",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  iommu: disable SVA when CONFIG_X86 is set  Patch series \"Fix stale IOTLB entries for kernel address space\", v7.  This proposes a fix for a security vulnerability related to IOMMU Shared Virtual Addressing (SVA).  In an SVA context, an IOMMU can cache kernel page table entries.  When a kernel page table page is freed and reallocated for another purpose, the IOMMU might still hold stale, incorrect entries.  This can be exploited to cause a use-after-free or write-after-free condition, potentially leading to privilege escalation or data corruption.  This solution introduces a deferred freeing mechanism for kernel page table pages, which provides a safe window to notify the IOMMU to invalidate its caches before the page is reused.   This patch (of 8):  In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware shares and walks the CPU's page tables.  The x86 architecture maps the kernel's virtual address space into the upper portion of every process's page table.  Consequently, in an SVA context, the IOMMU hardware can walk and cache kernel page table entries.  The Linux kernel currently lacks a notification mechanism for kernel page table changes, specifically when page table pages are freed and reused. The IOMMU driver is only notified of changes to user virtual address mappings.  This can cause the IOMMU's internal caches to retain stale entries for kernel VA.  Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when kernel page table pages are freed and later reallocated.  The IOMMU could misinterpret the new data as valid page table entries.  The IOMMU might then walk into attacker-controlled memory, leading to arbitrary physical memory DMA access or privilege escalation.  This is also a Write-After-Free issue, as the IOMMU will potentially continue to write Accessed and Dirty bits to the freed memory while attempting to walk the stale page tables.  Currently, SVA contexts are unprivileged and cannot access kernel mappings.  However, the IOMMU will still walk kernel-only page tables all the way down to the leaf entries, where it realizes the mapping is for the kernel and errors out.  This means the IOMMU still caches these intermediate page table entries, making the described vulnerability a real concern.  Disable SVA on x86 architecture until the IOMMU can receive notification to flush the paging cache before freeing the CPU kernel page table pages.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-01-13 16:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2023-53673",
                                "url": "https://ubuntu.com/security/CVE-2023-53673",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  Bluetooth: hci_event: call disconnect callback before deleting conn  In hci_cs_disconnect, we do hci_conn_del even if disconnection failed.  ISO, L2CAP and SCO connections refer to the hci_conn without hci_conn_get, so disconn_cfm must be called so they can clean up their conn, otherwise use-after-free occurs.  ISO: ========================================================== iso_sock_connect:880: sk 00000000eabd6557 iso_connect_cis:356: 70:1a:b8:98:ff:a2 -> 28:3d:c2:4a:7e:da ... iso_conn_add:140: hcon 000000001696f1fd conn 00000000b6251073 hci_dev_put:1487: hci0 orig refcnt 17 __iso_chan_add:214: conn 00000000b6251073 iso_sock_clear_timer:117: sock 00000000eabd6557 state 3 ... hci_rx_work:4085: hci0 Event packet hci_event_packet:7601: hci0: event 0x0f hci_cmd_status_evt:4346: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3107: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon 000000001696f1fd handle 2560 hci_conn_unlink:1102: hci0: hcon 000000001696f1fd hci_conn_drop:1451: hcon 00000000d8521aaf orig refcnt 2 hci_chan_list_flush:2780: hcon 000000001696f1fd hci_dev_put:1487: hci0 orig refcnt 21 hci_dev_put:1487: hci0 orig refcnt 20 hci_req_cmd_complete:3978: opcode 0x0406 status 0x0c ... <no iso_* activity on sk/conn> ... iso_sock_sendmsg:1098: sock 00000000dea5e2e0, sk 00000000eabd6557 BUG: kernel NULL pointer dereference, address: 0000000000000668 PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 RIP: 0010:iso_sock_sendmsg (net/bluetooth/iso.c:1112) bluetooth ==========================================================  L2CAP: ================================================================== hci_cmd_status_evt:4359: hci0: opcode 0x0406 hci_cs_disconnect:2760: hci0: status 0x0c hci_sent_cmd_data:3085: hci0 opcode 0x0406 hci_conn_del:1151: hci0 hcon ffff88800c999000 handle 3585 hci_conn_unlink:1102: hci0: hcon ffff88800c999000 hci_chan_list_flush:2780: hcon ffff88800c999000 hci_chan_del:2761: hci0 hcon ffff88800c999000 chan ffff888018ddd280 ... BUG: KASAN: slab-use-after-free in hci_send_acl+0x2d/0x540 [bluetooth] Read of size 8 at addr ffff888018ddd298 by task bluetoothd/1175  CPU: 0 PID: 1175 Comm: bluetoothd Tainted: G            E      6.4.0-rc4+ #2 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace:  <TASK>  dump_stack_lvl+0x5b/0x90  print_report+0xcf/0x670  ? __virt_addr_valid+0xf8/0x180  ? hci_send_acl+0x2d/0x540 [bluetooth]  kasan_report+0xa8/0xe0  ? hci_send_acl+0x2d/0x540 [bluetooth]  hci_send_acl+0x2d/0x540 [bluetooth]  ? __pfx___lock_acquire+0x10/0x10  l2cap_chan_send+0x1fd/0x1300 [bluetooth]  ? l2cap_sock_sendmsg+0xf2/0x170 [bluetooth]  ? __pfx_l2cap_chan_send+0x10/0x10 [bluetooth]  ? lock_release+0x1d5/0x3c0  ? mark_held_locks+0x1a/0x90  l2cap_sock_sendmsg+0x100/0x170 [bluetooth]  sock_write_iter+0x275/0x280  ? __pfx_sock_write_iter+0x10/0x10  ? __pfx___lock_acquire+0x10/0x10  do_iter_readv_writev+0x176/0x220  ? __pfx_do_iter_readv_writev+0x10/0x10  ? find_held_lock+0x83/0xa0  ? selinux_file_permission+0x13e/0x210  do_iter_write+0xda/0x340  vfs_writev+0x1b4/0x400  ? __pfx_vfs_writev+0x10/0x10  ? __seccomp_filter+0x112/0x750  ? populate_seccomp_data+0x182/0x220  ? __fget_light+0xdf/0x100  ? do_writev+0x19d/0x210  do_writev+0x19d/0x210  ? __pfx_do_writev+0x10/0x10  ? mark_held_locks+0x1a/0x90  do_syscall_64+0x60/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  ? do_syscall_64+0x6c/0x90  ? lockdep_hardirqs_on_prepare+0x149/0x210  entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7ff45cb23e64 Code: 15 d1 1f 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 80 3d 9d a7 0d 00 00 74 13 b8 14 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89 RSP: 002b:00007fff21ae09b8 EFLAGS: 00000202 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: ---truncated---",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-07 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23262",
                                "url": "https://ubuntu.com/security/CVE-2026-23262",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  gve: Fix stats report corruption on queue count change  The driver and the NIC share a region in memory for stats reporting. The NIC calculates its offset into this region based on the total size of the stats region and the size of the NIC's stats.  When the number of queues is changed, the driver's stats region is resized. If the queue count is increased, the NIC can write past the end of the allocated stats region, causing memory corruption. If the queue count is decreased, there is a gap between the driver and NIC stats, leading to incorrect stats reporting.  This change fixes the issue by allocating stats region with maximum size, and the offset calculation for NIC stats is changed to match with the calculation of the NIC.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40082",
                                "url": "https://ubuntu.com/security/CVE-2025-40082",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()  BUG: KASAN: slab-out-of-bounds in hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186 Read of size 2 at addr ffff8880289ef218 by task syz.6.248/14290  CPU: 0 UID: 0 PID: 14290 Comm: syz.6.248 Not tainted 6.16.4 #1 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 Call Trace:  <TASK>  __dump_stack lib/dump_stack.c:94 [inline]  dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120  print_address_description mm/kasan/report.c:378 [inline]  print_report+0xca/0x5f0 mm/kasan/report.c:482  kasan_report+0xca/0x100 mm/kasan/report.c:595  hfsplus_uni2asc+0xa71/0xb90 fs/hfsplus/unicode.c:186  hfsplus_listxattr+0x5b6/0xbd0 fs/hfsplus/xattr.c:738  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7fe0e9fae16d Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fe0eae67f98 EFLAGS: 00000246 ORIG_RAX: 00000000000000c3 RAX: ffffffffffffffda RBX: 00007fe0ea205fa0 RCX: 00007fe0e9fae16d RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000200000000000 RBP: 00007fe0ea0480f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007fe0ea206038 R14: 00007fe0ea205fa0 R15: 00007fe0eae48000  </TASK>  Allocated by task 14290:  kasan_save_stack+0x24/0x50 mm/kasan/common.c:47  kasan_save_track+0x14/0x30 mm/kasan/common.c:68  poison_kmalloc_redzone mm/kasan/common.c:377 [inline]  __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:394  kasan_kmalloc include/linux/kasan.h:260 [inline]  __do_kmalloc_node mm/slub.c:4333 [inline]  __kmalloc_noprof+0x219/0x540 mm/slub.c:4345  kmalloc_noprof include/linux/slab.h:909 [inline]  hfsplus_find_init+0x95/0x1f0 fs/hfsplus/bfind.c:21  hfsplus_listxattr+0x331/0xbd0 fs/hfsplus/xattr.c:697  vfs_listxattr+0xbe/0x140 fs/xattr.c:493  listxattr+0xee/0x190 fs/xattr.c:924  filename_listxattr fs/xattr.c:958 [inline]  path_listxattrat+0x143/0x360 fs/xattr.c:988  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x4c0 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  When hfsplus_uni2asc is called from hfsplus_listxattr, it actually passes in a struct hfsplus_attr_unistr*. The size of the corresponding structure is different from that of hfsplus_unistr, so the previous fix (94458781aee6) is insufficient. The pointer on the unicode buffer is still going beyond the allocated memory.  This patch introduces two warpper functions hfsplus_uni2asc_xattr_str and hfsplus_uni2asc_str to process two unicode buffers, struct hfsplus_attr_unistr* and struct hfsplus_unistr* respectively. When ustrlen value is bigger than the allocated memory size, the ustrlen value is limited to an safe size.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-28 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37822",
                                "url": "https://ubuntu.com/security/CVE-2025-37822",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: uprobes: Add missing fence.i after building the XOL buffer  The XOL (execute out-of-line) buffer is used to single-step the replaced instruction(s) for uprobes. The RISC-V port was missing a proper fence.i (i$ flushing) after constructing the XOL buffer, which can result in incorrect execution of stale/broken instructions.  This was found running the BPF selftests \"test_progs: uprobe_autoattach, attach_probe\" on the Spacemit K1/X60, where the uprobes tests randomly blew up.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-08 07:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23190",
                                "url": "https://ubuntu.com/security/CVE-2026-23190",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ASoC: amd: fix memory leak in acp3x pdm dma ops",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23112",
                                "url": "https://ubuntu.com/security/CVE-2026-23112",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec  nvmet_tcp_build_pdu_iovec() could walk past cmd->req.sg when a PDU length or offset exceeds sg_cnt and then use bogus sg->length/offset values, leading to _copy_to_iter() GPF/KASAN. Guard sg_idx, remaining entries, and sg->length/offset before building the bvec.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23111",
                                "url": "https://ubuntu.com/security/CVE-2026-23111",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23180",
                                "url": "https://ubuntu.com/security/CVE-2026-23180",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: add bounds check for if_id in IRQ handler  The IRQ handler extracts if_id from the upper 16 bits of the hardware status register and uses it to index into ethsw->ports[] without validation. Since if_id can be any 16-bit value (0-65535) but the ports array is only allocated with sw_attr.num_ifs elements, this can lead to an out-of-bounds read potentially.  Add a bounds check before accessing the array, consistent with the existing validation in dpaa2_switch_rx().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23256",
                                "url": "https://ubuntu.com/security/CVE-2026-23256",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Compile tested only. Issue found using code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23257",
                                "url": "https://ubuntu.com/security/CVE-2026-23257",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup  In setup_nic_devices(), the initialization loop jumps to the label setup_nic_dev_free on failure. The current cleanup loop while(i--) skip the failing index i, causing a memory leak.  Fix this by changing the loop to iterate from the current index i down to 0.  Also, decrement i in the devlink_alloc failure path to point to the last successfully allocated index.  Compile tested only. Issue found using code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23258",
                                "url": "https://ubuntu.com/security/CVE-2026-23258",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: liquidio: Initialize netdev pointer before queue setup  In setup_nic_devices(), the netdev is allocated using alloc_etherdev_mq(). However, the pointer to this structure is stored in oct->props[i].netdev only after the calls to netif_set_real_num_rx_queues() and netif_set_real_num_tx_queues().  If either of these functions fails, setup_nic_devices() returns an error without freeing the allocated netdev. Since oct->props[i].netdev is still NULL at this point, the cleanup function liquidio_destroy_nic_device() will fail to find and free the netdev, resulting in a memory leak.  Fix this by initializing oct->props[i].netdev before calling the queue setup functions. This ensures that the netdev is properly accessible for cleanup in case of errors.  Compile tested only. Issue found using a prototype static analysis tool and code review.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-18 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23206",
                                "url": "https://ubuntu.com/security/CVE-2026-23206",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero  The driver allocates arrays for ports, FDBs, and filter blocks using kcalloc() with ethsw->sw_attr.num_ifs as the element count. When the device reports zero interfaces (either due to hardware configuration or firmware issues), kcalloc(0, ...) returns ZERO_SIZE_PTR (0x10) instead of NULL.  Later in dpaa2_switch_probe(), the NAPI initialization unconditionally accesses ethsw->ports[0]->netdev, which attempts to dereference ZERO_SIZE_PTR (address 0x10), resulting in a kernel panic.  Add a check to ensure num_ifs is greater than zero after retrieving device attributes. This prevents the zero-sized allocations and subsequent invalid pointer dereference.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23176",
                                "url": "https://ubuntu.com/security/CVE-2026-23176",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  platform/x86: toshiba_haps: Fix memory leaks in add/remove routines  toshiba_haps_add() leaks the haps object allocated by it if it returns an error after allocating that object successfully.  toshiba_haps_remove() does not free the object pointed to by toshiba_haps before clearing that pointer, so it becomes unreachable allocated memory.  Address these memory leaks by using devm_kzalloc() for allocating the memory in question.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23216",
                                "url": "https://ubuntu.com/security/CVE-2026-23216",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()  In iscsit_dec_conn_usage_count(), the function calls complete() while holding the conn->conn_usage_lock. As soon as complete() is invoked, the waiter (such as iscsit_close_connection()) may wake up and proceed to free the iscsit_conn structure.  If the waiter frees the memory before the current thread reaches spin_unlock_bh(), it results in a KASAN slab-use-after-free as the function attempts to release a lock within the already-freed connection structure.  Fix this by releasing the spinlock before calling complete().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-18 15:18:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23193",
                                "url": "https://ubuntu.com/security/CVE-2026-23193",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  scsi: target: iscsi: Fix use-after-free in iscsit_dec_session_usage_count()  In iscsit_dec_session_usage_count(), the function calls complete() while holding the sess->session_usage_lock. Similar to the connection usage count logic, the waiter signaled by complete() (e.g., in the session release path) may wake up and free the iscsit_session structure immediately.  This creates a race condition where the current thread may attempt to execute spin_unlock_bh() on a session structure that has already been deallocated, resulting in a KASAN slab-use-after-free.  To resolve this, release the session_usage_lock before calling complete() to ensure all dereferences of the sess pointer are finished before the waiter is allowed to proceed with deallocation.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71220",
                                "url": "https://ubuntu.com/security/CVE-2025-71220",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  smb/server: call ksmbd_session_rpc_close() on error path in create_smb2_pipe()  When ksmbd_iov_pin_rsp() fails, we should call ksmbd_session_rpc_close().",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71222",
                                "url": "https://ubuntu.com/security/CVE-2025-71222",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: wlcore: ensure skb headroom before skb_push  This avoids occasional skb_under_panic Oops from wl1271_tx_work. In this case, headroom is less than needed (typically 110 - 94 = 16 bytes).",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-71224",
                                "url": "https://ubuntu.com/security/CVE-2025-71224",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  wifi: mac80211: ocb: skip rx_no_sta when interface is not joined  ieee80211_ocb_rx_no_sta() assumes a valid channel context, which is only present after JOIN_OCB.  RX may run before JOIN_OCB is executed, in which case the OCB interface is not operational. Skip RX peer handling when the interface is not joined to avoid warnings in the RX path.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-68214",
                                "url": "https://ubuntu.com/security/CVE-2025-68214",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  timers: Fix NULL function pointer race in timer_shutdown_sync()  There is a race condition between timer_shutdown_sync() and timer expiration that can lead to hitting a WARN_ON in expire_timers().  The issue occurs when timer_shutdown_sync() clears the timer function to NULL while the timer is still running on another CPU. The race scenario looks like this:  CPU0\t\t\t\t\tCPU1 \t\t\t\t\t<SOFTIRQ> \t\t\t\t\tlock_timer_base() \t\t\t\t\texpire_timers() \t\t\t\t\tbase->running_timer = timer; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t[call_timer_fn enter] \t\t\t\t\tmod_timer() \t\t\t\t\t... timer_shutdown_sync() lock_timer_base() // For now, will not detach the timer but only clear its function to NULL if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base() \t\t\t\t\t[call_timer_fn exit] \t\t\t\t\tlock_timer_base() \t\t\t\t\tbase->running_timer = NULL; \t\t\t\t\tunlock_timer_base() \t\t\t\t\t... \t\t\t\t\t// Now timer is pending while its function set to NULL. \t\t\t\t\t// next timer trigger \t\t\t\t\t<SOFTIRQ> \t\t\t\t\texpire_timers() \t\t\t\t\tWARN_ON_ONCE(!fn) // hit \t\t\t\t\t... lock_timer_base() // Now timer will detach if (base->running_timer != timer) \tret = detach_if_pending(timer, base, true); if (shutdown) \ttimer->function = NULL; unlock_timer_base()  The problem is that timer_shutdown_sync() clears the timer function regardless of whether the timer is currently running. This can leave a pending timer with a NULL function pointer, which triggers the WARN_ON_ONCE(!fn) check in expire_timers().  Fix this by only clearing the timer function when actually detaching the timer. If the timer is running, leave the function pointer intact, which is safe because the timer will be properly detached when it finishes running.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-16 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38201",
                                "url": "https://ubuntu.com/security/CVE-2025-38201",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX  Otherwise, it is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when resizing hashtable because __GFP_NOWARN is unset.  Similar to:    b541ba7d1f5a (\"netfilter: conntrack: clamp maximum hashtable size to INT_MAX\")",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-07-04 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23198",
                                "url": "https://ubuntu.com/security/CVE-2026-23198",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: Don't clobber irqfd routing type when deassigning irqfd  When deassigning a KVM_IRQFD, don't clobber the irqfd's copy of the IRQ's routing entry as doing so breaks kvm_arch_irq_bypass_del_producer() on x86 and arm64, which explicitly look for KVM_IRQ_ROUTING_MSI.  Instead, to handle a concurrent routing update, verify that the irqfd is still active before consuming the routing information.  As evidenced by the x86 and arm64 bugs, and another bug in kvm_arch_update_irqfd_routing() (see below), clobbering the entry type without notifying arch code is surprising and error prone.  As a bonus, checking that the irqfd is active provides a convenient location for documenting _why_ KVM must not consume the routing entry for an irqfd that is in the process of being deassigned: once the irqfd is deleted from the list (which happens *before* the eventfd is detached), it will no longer receive updates via kvm_irq_routing_update(), and so KVM could deliver an event using stale routing information (relative to KVM_SET_GSI_ROUTING returning to userspace).  As an even better bonus, explicitly checking for the irqfd being active fixes a similar bug to the one the clobbering is trying to prevent: if an irqfd is deactivated, and then its routing is changed, kvm_irq_routing_update() won't invoke kvm_arch_update_irqfd_routing() (because the irqfd isn't in the list).  And so if the irqfd is in bypass mode, IRQs will continue to be posted using the old routing information.  As for kvm_arch_irq_bypass_del_producer(), clobbering the routing type results in KVM incorrectly keeping the IRQ in bypass mode, which is especially problematic on AMD as KVM tracks IRQs that are being posted to a vCPU in a list whose lifetime is tied to the irqfd.  Without the help of KASAN to detect use-after-free, the most common sympton on AMD is a NULL pointer deref in amd_iommu_update_ga() due to the memory for irqfd structure being re-allocated and zeroed, resulting in irqfd->irq_bypass_data being NULL when read by avic_update_iommu_vcpu_affinity():    BUG: kernel NULL pointer dereference, address: 0000000000000018   #PF: supervisor read access in kernel mode   #PF: error_code(0x0000) - not-present page   PGD 40cf2b9067 P4D 40cf2b9067 PUD 408362a067 PMD 0   Oops: Oops: 0000 [#1] SMP   CPU: 6 UID: 0 PID: 40383 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--5dddc257e6b2-irqfd #31 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:amd_iommu_update_ga+0x19/0xe0   Call Trace:    <TASK>    avic_update_iommu_vcpu_affinity+0x3d/0x90 [kvm_amd]    __avic_vcpu_load+0xf4/0x130 [kvm_amd]    kvm_arch_vcpu_load+0x89/0x210 [kvm]    vcpu_load+0x30/0x40 [kvm]    kvm_arch_vcpu_ioctl_run+0x45/0x620 [kvm]    kvm_vcpu_ioctl+0x571/0x6a0 [kvm]    __se_sys_ioctl+0x6d/0xb0    do_syscall_64+0x6f/0x9d0    entry_SYSCALL_64_after_hwframe+0x4b/0x53   RIP: 0033:0x46893b     </TASK>   ---[ end trace 0000000000000000 ]---  If AVIC is inhibited when the irfd is deassigned, the bug will manifest as list corruption, e.g. on the next irqfd assignment.    list_add corruption. next->prev should be prev (ffff8d474d5cd588),                        but was 0000000000000000. (next=ffff8d8658f86530).   ------------[ cut here ]------------   kernel BUG at lib/list_debug.c:31!   Oops: invalid opcode: 0000 [#1] SMP   CPU: 128 UID: 0 PID: 80818 Comm: vfio_irq_test   Tainted: G     U  W  O        6.19.0-smp--f19dc4d680ba-irqfd #28 NONE   Tainted: [U]=USER, [W]=WARN, [O]=OOT_MODULE   Hardware name: Google, Inc. Arcadia_IT_80/Arcadia_IT_80, BIOS 34.78.2-0 09/05/2025   RIP: 0010:__list_add_valid_or_report+0x97/0xc0   Call Trace:    <TASK>    avic_pi_update_irte+0x28e/0x2b0 [kvm_amd]    kvm_pi_update_irte+0xbf/0x190 [kvm]    kvm_arch_irq_bypass_add_producer+0x72/0x90 [kvm]    irq_bypass_register_consumer+0xcd/0x170 [irqbypa ---truncated---",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-14 17:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23272",
                                "url": "https://ubuntu.com/security/CVE-2026-23272",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: unconditionally bump set->nelems before insertion  In case that the set is full, a new element gets published then removed without waiting for the RCU grace period, while RCU reader can be walking over it already.  To address this issue, add the element transaction even if set is full, but toggle the set_full flag to report -ENFILE so the abort path safely unwinds the set to its previous state.  As for element updates, decrement set->nelems to restore it.  A simpler fix is to call synchronize_rcu() in the error path. However, with a large batch adding elements to already maxed-out set, this could cause noticeable slowdown of such batches.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-20 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31418",
                                "url": "https://ubuntu.com/security/CVE-2026-31418",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: ipset: drop logically empty buckets in mtype_del  mtype_del() counts empty slots below n->pos in k, but it only drops the bucket when both n->pos and k are zero. This misses buckets whose live entries have all been removed while n->pos still points past deleted slots.  Treat a bucket as empty when all positions below n->pos are unused and release it directly instead of shrinking it further.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23278",
                                "url": "https://ubuntu.com/security/CVE-2026-23278",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: always walk all pending catchall elements  During transaction processing we might have more than one catchall element: 1 live catchall element and 1 pending element that is coming as part of the new batch.  If the map holding the catchall elements is also going away, its required to toggle all catchall elements and not just the first viable candidate.  Otherwise, we get:  WARNING: ./include/net/netfilter/nf_tables.h:1281 at nft_data_release+0xb7/0xe0 [nf_tables], CPU#2: nft/1404  RIP: 0010:nft_data_release+0xb7/0xe0 [nf_tables]  [..]  __nft_set_elem_destroy+0x106/0x380 [nf_tables]  nf_tables_abort_release+0x348/0x8d0 [nf_tables]  nf_tables_abort+0xcf2/0x3ac0 [nf_tables]  nfnetlink_rcv_batch+0x9c9/0x20e0 [..]",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-03-20 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46300",
                                "url": "https://ubuntu.com/security/CVE-2026-46300",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: skbuff: preserve shared-frag marker during coalescing  skb_try_coalesce() can attach paged frags from @from to @to.  If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost.  That breaks the invariant relied on by later in-place writers.  In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data().  If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags.  Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags.  The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-23 12:17:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-46333",
                                "url": "https://ubuntu.com/security/CVE-2026-46333",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ptrace: slightly saner 'get_dumpable()' logic  The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm.  And almost all users do in fact use it only for the case where the task has a mm pointer.  But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS).  Including for threads that no longer have a VM (and maybe never did, like most kernel threads).  It's not what this flag was designed for, but it is what it is.  The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional \"drop capabilities\" model doesn't make any difference for this all.  Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached \"last dumpability\" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-15 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43500",
                                "url": "https://ubuntu.com/security/CVE-2026-43500",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present  The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE handler in rxrpc_verify_response() copy the skb to a linear one before calling into the security ops only when skb_cloned() is true.  An skb that is not cloned but still carries externally-owned paged fragments (e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via __ip_append_data, or a chained skb_has_frag_list()) falls through to the in-place decryption path, which binds the frag pages directly into the AEAD/skcipher SGL via skb_to_sgvec().  Extend the gate to also unshare when skb_has_frag_list() or skb_has_shared_frag() is true.  This catches the splice-loopback vector and other externally-shared frag sources while preserving the zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC page_pool RX, GRO).  The OOM/trace handling already in place is reused.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-11 08:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-43284",
                                "url": "https://ubuntu.com/security/CVE-2026-43284",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  xfrm: esp: avoid in-place decrypt on shared skb frags  MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(), so later paths that may modify packet data can first make a private copy. The IPv4/IPv6 datagram append paths did not set this flag when splicing pages into UDP skbs.  That leaves an ESP-in-UDP packet made from shared pipe pages looking like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW fast path for uncloned skbs without a frag_list and decrypts in place over data that is not owned privately by the skb.  Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching TCP. Also make ESP input fall back to skb_cow_data() when the flag is present, so ESP does not decrypt externally backed frags in place. Private nonlinear skb frags still use the existing fast path.  This intentionally does not change ESP output. In esp_output_head(), the path that appends the ESP trailer to existing skb tailroom without calling skb_cow_data() is not reachable for nonlinear skbs: skb_tailroom() returns zero when skb->data_len is nonzero, while ESP tailen is positive. Thus ESP output will either use the separate destination-frag path or fall back to skb_cow_data().",
                                "cve_priority": "high",
                                "cve_public_date": "2026-05-08 08:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31419",
                                "url": "https://ubuntu.com/security/CVE-2026-31419",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: bonding: fix use-after-free in bond_xmit_broadcast()  bond_xmit_broadcast() reuses the original skb for the last slave (determined by bond_is_last_slave()) and clones it for others. Concurrent slave enslave/release can mutate the slave list during RCU-protected iteration, changing which slave is \"last\" mid-loop. This causes the original skb to be double-consumed (double-freed).  Replace the racy bond_is_last_slave() check with a simple index comparison (i + 1 == slaves_count) against the pre-snapshot slave count taken via READ_ONCE() before the loop.  This preserves the zero-copy optimization for the last slave while making the \"last\" determination stable against concurrent list mutations.  The UAF can trigger the following crash:  ================================================================== BUG: KASAN: slab-use-after-free in skb_clone Read of size 8 at addr ffff888100ef8d40 by task exploit/147  CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY Call Trace:  <TASK>  dump_stack_lvl (lib/dump_stack.c:123)  print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)  kasan_report (mm/kasan/report.c:597)  skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)  bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)  bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)  dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)  __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)  ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)  ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)  ip6_output (net/ipv6/ip6_output.c:250)  ip6_send_skb (net/ipv6/ip6_output.c:1985)  udp_v6_send_skb (net/ipv6/udp.c:1442)  udpv6_sendmsg (net/ipv6/udp.c:1733)  __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)  __x64_sys_sendto (net/socket.c:2209)  do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)  </TASK>  Allocated by task 147:  Freed by task 147:  The buggy address belongs to the object at ffff888100ef8c80  which belongs to the cache skbuff_head_cache of size 224 The buggy address is located 192 bytes inside of  freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)  Memory state around the buggy address:  ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc  ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc                                                     ^  ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb  ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31431",
                                "url": "https://ubuntu.com/security/CVE-2026-31431",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: algif_aead - Revert to operating out-of-place  This mostly reverts commit 72548b093ee3 except for the copying of the associated data.  There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings.  Get rid of all the complexity added for in-place operation and just copy the AD directly.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-04-22 09:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31533",
                                "url": "https://ubuntu.com/security/CVE-2026-31533",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption  The -EBUSY handling in tls_do_encryption(), introduced by commit 859054147318 (\"net: tls: handle backlogging of crypto requests\"), has a use-after-free due to double cleanup of encrypt_pending and the scatterlist entry.  When crypto_aead_encrypt() returns -EBUSY, the request is enqueued to the cryptd backlog and the async callback tls_encrypt_done() will be invoked upon completion. That callback unconditionally restores the scatterlist entry (sge->offset, sge->length) and decrements ctx->encrypt_pending. However, if tls_encrypt_async_wait() returns an error, the synchronous error path in tls_do_encryption() performs the same cleanup again, double-decrementing encrypt_pending and double-restoring the scatterlist.  The double-decrement corrupts the encrypt_pending sentinel (initialized to 1), making tls_encrypt_async_wait() permanently skip the wait for pending async callbacks. A subsequent sendmsg can then free the tls_rec via bpf_exec_tx_verdict() while a cryptd callback is still pending, resulting in a use-after-free when the callback fires on the freed record.  Fix this by skipping the synchronous cleanup when the -EBUSY async wait returns an error, since the callback has already handled encrypt_pending and sge restoration.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-23 18:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31504",
                                "url": "https://ubuntu.com/security/CVE-2026-31504",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: fix fanout UAF in packet_release() via NETDEV_UP race  `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`.  The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window.  This bug was found following an additional audit with Claude Code based on CVE-2025-38617.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-22 14:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux: 5.15.0-184.194 -proposed tracker (LP: #2154219)",
                            "",
                            "  * Kernel regression (6.8.0-117.generic) (LP: #2153556)",
                            "    - net: bonding: update the slave array for broadcast mode",
                            "    - bonding: do not set usable_slaves for broadcast mode",
                            "",
                            "  * kernel null pointer BUG in 5.15 when disconnecting from cifs share",
                            "    (LP: #2150730)",
                            "    - SAUCE: cifs: fix null pointer dereference in find_ipc_from_server_path",
                            "",
                            "  * SUNRPC: System wide grep leads to NULL pointer deference in sysfs reads",
                            "    (LP: #2149767)",
                            "    - SUNRPC: Check if the xprt is connected before handling sysfs reads",
                            "    - SUNRPC: Do not dereference non-socket transports in sysfs",
                            "",
                            "  * SUNRPC: System wide grep leads to NULL pointer deference in sysfs reads",
                            "    (LP: #2149767) // CVE-2022-48816",
                            "    - SUNRPC: lock against ->sock changing during sysfs read",
                            "",
                            "  * iptables connlimit traffic loss (LP: #2149872)",
                            "    - netfilter: nf_conncount: fix tracking of connections from localhost",
                            "",
                            "  * Some powerpc test from ubuntu_kernel_selftests timeout with 45 seconds",
                            "    (LP: #2141536)",
                            "    - selftests/powerpc: Lower run time of count_stcx_fail test",
                            "    - selftests/powerpc: Give all tests 2 minutes timeout",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598)",
                            "    - x86/kfence: fix booting on 32bit non-PAE systems",
                            "    - platform/x86: intel_telemetry: Fix swapped arrays in PSS output",
                            "    - rbd: check for EOD after exclusive lock is ensured to be held",
                            "    - ARM: 9468/1: fix memset64() on big-endian",
                            "    - mm/kfence: randomize the freelist on initialization",
                            "    - Documentation: Remove bogus claim about del_timer_sync()",
                            "    - timers: Get rid of del_singleshot_timer_sync()",
                            "    - Documentation: Replace del_timer/del_timer_sync()",
                            "    - timers: Update the documentation to reflect on the new timer_shutdown()",
                            "      API",
                            "    - Bluetooth: hci_qca: Fix the teardown problem for real",
                            "    - binderfs: fix ida_alloc_max() upper bound",
                            "    - net: usb: sr9700: support devices with virtual driver CD",
                            "    - block,bfq: fix aux stat accumulation destination",
                            "    - HID: multitouch: add MT_QUIRK_STICKY_FINGERS to MT_CLS_VTL",
                            "    - HID: intel-ish-hid: Reset enum_devices_done before enumeration",
                            "    - HID: playstation: Center initial joystick axes to prevent spurious",
                            "      events",
                            "    - ALSA: hda/realtek: add HP Laptop 15s-eq1xxx mute LED quirk",
                            "    - netfilter: replace -EEXIST with -EBUSY",
                            "    - HID: quirks: Add another Chicony HP 5MP Cameras to hid_ignore_list",
                            "    - HID: Apply quirk HID_QUIRK_ALWAYS_POLL to Edifier QR30 (2d99:a101)",
                            "    - ring-buffer: Avoid softlockup in ring_buffer_resize() during memory free",
                            "    - wifi: mac80211: collect station statistics earlier when disconnect",
                            "    - ASoC: davinci-evm: Fix reference leak in davinci_evm_probe",
                            "    - ASoC: tlv320adcx140: Propagate error codes during probe",
                            "    - wifi: cfg80211: Fix bitrate calculation overflow for HE rates",
                            "    - wifi: mac80211: don't increment crypto_tx_tailroom_needed_cnt twice",
                            "    - platform/x86: intel_telemetry: Fix PSS event register mask",
                            "    - tipc: use kfree_sensitive() for session key material",
                            "    - hwmon: (occ) Mark occ_init_attribute() as __printf",
                            "    - nvmet-tcp: add an helper to free the cmd buffers",
                            "    - nvmet-tcp: fix memory leak when performing a controller reset",
                            "    - nvmet-tcp: fix regression in data_digest calculation",
                            "    - nvmet-tcp: don't map pages which can't come from HIGHMEM",
                            "    - tracing: Fix ftrace event field alignments",
                            "    - gve: Correct ethtool rx_dropped calculation",
                            "    - spi: tegra210-quad: Return IRQ_HANDLED when timeout already processed",
                            "      transfer",
                            "    - spi: tegra210-quad: Move curr_xfer read inside spinlock",
                            "    - spi: tegra210-quad: Protect curr_xfer assignment in",
                            "      tegra_qspi_setup_transfer_one",
                            "    - spi: tegra210-quad: Protect curr_xfer clearing in",
                            "      tegra_qspi_non_combined_seq_xfer",
                            "    - nvmet-tcp: pass iov_len instead of sg->length to bvec_set_page()",
                            "    - riscv: Replace function-like macro by static inline function",
                            "    - Linux 5.15.200",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23182",
                            "    - spi: tegra: Fix a memory leak in tegra_slink_probe()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23202",
                            "    - spi: tegra210-quad: Protect curr_xfer in tegra_qspi_combined_seq_xfer",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71089",
                            "    - iommu: disable SVA when CONFIG_X86 is set",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2023-53673",
                            "    - Bluetooth: hci_event: call disconnect callback before deleting conn",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23262",
                            "    - gve: Fix stats report corruption on queue count change",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-40082",
                            "    - hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-37822",
                            "    - riscv: uprobes: Add missing fence.i after building the XOL buffer",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23190",
                            "    - ASoC: amd: fix memory leak in acp3x pdm dma ops",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23112",
                            "    - nvmet-tcp: add bounds checks in nvmet_tcp_build_pdu_iovec",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23111",
                            "    - netfilter: nf_tables: fix inverted genmask check in",
                            "      nft_map_catchall_activate()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23180",
                            "    - dpaa2-switch: add bounds check for if_id in IRQ handler",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23256",
                            "    - net: liquidio: Fix off-by-one error in VF setup_nic_devices() cleanup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23257",
                            "    - net: liquidio: Fix off-by-one error in PF setup_nic_devices() cleanup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23258",
                            "    - net: liquidio: Initialize netdev pointer before queue setup",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23206",
                            "    - dpaa2-switch: prevent ZERO_SIZE_PTR dereference when num_ifs is zero",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23176",
                            "    - platform/x86: toshiba_haps: Fix memory leaks in add/remove routines",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23216",
                            "    - scsi: target: iscsi: Fix use-after-free in iscsit_dec_conn_usage_count()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23193",
                            "    - scsi: target: iscsi: Fix use-after-free in",
                            "      iscsit_dec_session_usage_count()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71220",
                            "    - smb/server: call ksmbd_session_rpc_close() on error path in",
                            "      create_smb2_pipe()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71222",
                            "    - wifi: wlcore: ensure skb headroom before skb_push",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-71224",
                            "    - wifi: mac80211: ocb: skip rx_no_sta when interface is not joined",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-68214",
                            "    - timers: Fix NULL function pointer race in timer_shutdown_sync()",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2025-38201",
                            "    - netfilter: nft_set_pipapo: clamp maximum map bucket size to INT_MAX",
                            "",
                            "  * Jammy update: v5.15.200 upstream stable release (LP: #2147598) //",
                            "    CVE-2026-23198",
                            "    - KVM: Don't clobber irqfd routing type when deassigning irqfd",
                            "",
                            "  * CVE-2026-23272",
                            "    - netfilter: nf_tables: always increment set element count",
                            "    - netfilter: nf_tables: fix set size with rbtree backend",
                            "    - netfilter: nf_tables: unconditionally bump set->nelems before insertion",
                            "",
                            "  * CVE-2026-31418",
                            "    - netfilter: ipset: drop logically empty buckets in mtype_del",
                            "",
                            "  * CVE-2026-23278",
                            "    - netfilter: nf_tables: always walk all pending catchall elements",
                            "",
                            "  * CVE-2026-46300",
                            "    - net: skbuff: preserve shared-frag marker during coalescing",
                            "    - net: skbuff: propagate shared-frag marker through frag-transfer helpers",
                            "",
                            "  * net/rds: reset op_nents when zerocopy page pin fails (LP: #2153962)",
                            "    - net/rds: reset op_nents when zerocopy page pin fails",
                            "",
                            "  * CVE-2026-46333",
                            "    - ptrace: slightly saner 'get_dumpable()' logic",
                            "",
                            "  * CVE-2026-43500",
                            "    - rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present",
                            "",
                            "  * CVE-2026-43284",
                            "    - xfrm: esp: avoid in-place decrypt on shared skb frags",
                            "    - xfrm: esp: ipv4: fix up flags setting",
                            "",
                            "  * CVE-2026-31419",
                            "    - net: bonding: fix use-after-free in bond_xmit_broadcast()",
                            "",
                            "  * CVE-2026-31431",
                            "    - crypto: scatterwalk - Backport memcpy_sglist()",
                            "    - crypto: algif_aead - use memcpy_sglist() instead of null skcipher",
                            "    - crypto: algif_aead - Revert to operating out-of-place",
                            "    - crypto: algif_aead - snapshot IV for async AEAD requests",
                            "    - crypto: authenc - use memcpy_sglist() instead of null skcipher",
                            "    - crypto: authencesn - Do not place hiseq at end of dst for out-of-place",
                            "      decryption",
                            "    - crypto: authencesn - Fix src offset when decrypting in-place",
                            "    - crypto: af_alg - Fix page reassignment overflow in af_alg_pull_tsgl",
                            "    - crypto: algif_aead - Fix minimum RX size check for decryption",
                            "",
                            "  * CVE-2026-31533",
                            "    - net/tls: fix use-after-free in -EBUSY error path of tls_do_encryption",
                            "",
                            "  * CVE-2026-31504",
                            "    - net: fix fanout UAF in packet_release() via NETDEV_UP race",
                            ""
                        ],
                        "package": "linux",
                        "version": "5.15.0-184.194",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2154219,
                            2153556,
                            2150730,
                            2149767,
                            2149767,
                            2149872,
                            2141536,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2147598,
                            2153962
                        ],
                        "author": "Edoardo Canepa <edoardo.canepa@canonical.com>",
                        "date": "Mon, 25 May 2026 20:19:26 +0200"
                    }
                ],
                "notes": "linux-modules-5.15.0-185-generic version '5.15.0-185.195' (source package linux version '5.15.0-185.195') was added. linux-modules-5.15.0-185-generic version '5.15.0-185.195' has the same source package name, linux, as removed package linux-headers-5.15.0-181. As such we can use the source package version of the removed package, '5.15.0-181.191', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "removed": {
        "deb": [
            {
                "name": "linux-headers-5.15.0-181",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-181.191",
                    "version": "5.15.0-181.191"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-5.15.0-181-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-181.191",
                    "version": "5.15.0-181.191"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-5.15.0-181-generic",
                "from_version": {
                    "source_package_name": "linux-signed",
                    "source_package_version": "5.15.0-181.191",
                    "version": "5.15.0-181.191"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-modules-5.15.0-181-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "5.15.0-181.191",
                    "version": "5.15.0-181.191"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "notes": "Changelog diff for Ubuntu 22.04 jammy image from release image serial 20260617 to 20260627",
    "from_series": "jammy",
    "to_series": "jammy",
    "from_serial": "20260617",
    "to_serial": "20260627",
    "from_manifest_filename": "release_manifest.previous",
    "to_manifest_filename": "manifest.current"
}