{
    "summary": {
        "snap": {
            "added": [],
            "removed": [],
            "diff": []
        },
        "deb": {
            "added": [
                "linux-headers-6.8.0-90",
                "linux-headers-6.8.0-90-generic",
                "linux-image-6.8.0-90-generic",
                "linux-modules-6.8.0-90-generic",
                "linux-tools-6.8.0-90",
                "linux-tools-6.8.0-90-generic"
            ],
            "removed": [
                "linux-headers-6.8.0-88",
                "linux-headers-6.8.0-88-generic",
                "linux-image-6.8.0-88-generic",
                "linux-modules-6.8.0-88-generic",
                "linux-tools-6.8.0-88",
                "linux-tools-6.8.0-88-generic"
            ],
            "diff": [
                "apparmor",
                "dhcpcd-base",
                "libapparmor1:ppc64el",
                "libpng16-16t64:ppc64el",
                "linux-headers-generic",
                "linux-headers-virtual",
                "linux-image-virtual",
                "linux-libc-dev:ppc64el",
                "linux-tools-common",
                "linux-virtual",
                "python-apt-common",
                "python3-apt",
                "python3-urllib3"
            ]
        }
    },
    "diff": {
        "deb": [
            {
                "name": "apparmor",
                "from_version": {
                    "source_package_name": "apparmor",
                    "source_package_version": "4.0.1really4.0.1-0ubuntu0.24.04.4",
                    "version": "4.0.1really4.0.1-0ubuntu0.24.04.4"
                },
                "to_version": {
                    "source_package_name": "apparmor",
                    "source_package_version": "4.0.1really4.0.1-0ubuntu0.24.04.5",
                    "version": "4.0.1really4.0.1-0ubuntu0.24.04.5"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2115234
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * profiles: make /sys/devices PCI paths hex-aware (LP: #2115234)",
                            ""
                        ],
                        "package": "apparmor",
                        "version": "4.0.1really4.0.1-0ubuntu0.24.04.5",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2115234
                        ],
                        "author": "Keifer Snedeker <keifer.snedeker@canonical.com>",
                        "date": "Fri, 15 Aug 2025 13:16:02 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "dhcpcd-base",
                "from_version": {
                    "source_package_name": "dhcpcd",
                    "source_package_version": "1:10.0.6-1ubuntu3.1",
                    "version": "1:10.0.6-1ubuntu3.1"
                },
                "to_version": {
                    "source_package_name": "dhcpcd",
                    "source_package_version": "1:10.0.6-1ubuntu3.2",
                    "version": "1:10.0.6-1ubuntu3.2"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2131252
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Fix intermittent dumplease failures when parsing stdin (LP: #2131252)",
                            "    - d/p/lp2131252-0-Force-dumplease-to-parse-stdin.patch",
                            "    - d/p/lp2131252-1-Improve-and-document-prior.patch",
                            ""
                        ],
                        "package": "dhcpcd",
                        "version": "1:10.0.6-1ubuntu3.2",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131252
                        ],
                        "author": "Bryan Fraschetti <bryan.fraschetti@canonical.com>",
                        "date": "Thu, 13 Nov 2025 12:47:30 -0500"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libapparmor1:ppc64el",
                "from_version": {
                    "source_package_name": "apparmor",
                    "source_package_version": "4.0.1really4.0.1-0ubuntu0.24.04.4",
                    "version": "4.0.1really4.0.1-0ubuntu0.24.04.4"
                },
                "to_version": {
                    "source_package_name": "apparmor",
                    "source_package_version": "4.0.1really4.0.1-0ubuntu0.24.04.5",
                    "version": "4.0.1really4.0.1-0ubuntu0.24.04.5"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2115234
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * profiles: make /sys/devices PCI paths hex-aware (LP: #2115234)",
                            ""
                        ],
                        "package": "apparmor",
                        "version": "4.0.1really4.0.1-0ubuntu0.24.04.5",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2115234
                        ],
                        "author": "Keifer Snedeker <keifer.snedeker@canonical.com>",
                        "date": "Fri, 15 Aug 2025 13:16:02 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libpng16-16t64:ppc64el",
                "from_version": {
                    "source_package_name": "libpng1.6",
                    "source_package_version": "1.6.43-5build1",
                    "version": "1.6.43-5build1"
                },
                "to_version": {
                    "source_package_name": "libpng1.6",
                    "source_package_version": "1.6.43-5ubuntu0.1",
                    "version": "1.6.43-5ubuntu0.1"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-64505",
                        "url": "https://ubuntu.com/security/CVE-2025-64505",
                        "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. Prior to version 1.6.51, a heap buffer over-read vulnerability exists in libpng's png_do_quantize function when processing PNG files with malformed palette indices. The vulnerability occurs when palette_lookup array bounds are not validated against externally-supplied image data, allowing an attacker to craft a PNG file with out-of-range palette indices that trigger out-of-bounds memory access. This issue has been patched in version 1.6.51.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-11-25 00:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-64506",
                        "url": "https://ubuntu.com/security/CVE-2025-64506",
                        "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. From version 1.6.0 to before 1.6.51, a heap buffer over-read vulnerability exists in libpng's png_write_image_8bit function when processing 8-bit images through the simplified write API with convert_to_8bit enabled. The vulnerability affects 8-bit grayscale+alpha, RGB/RGBA, and images with incomplete row data. A conditional guard incorrectly allows 8-bit input to enter code expecting 16-bit input, causing reads up to 2 bytes beyond allocated buffer boundaries. This issue has been patched in version 1.6.51.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-11-25 00:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-64720",
                        "url": "https://ubuntu.com/security/CVE-2025-64720",
                        "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. From version 1.6.0 to before 1.6.51, an out-of-bounds read vulnerability exists in png_image_read_composite when processing palette images with PNG_FLAG_OPTIMIZE_ALPHA enabled. The palette compositing code in png_init_read_transformations incorrectly applies background compositing during premultiplication, violating the invariant component ≤ alpha × 257 required by the simplified PNG API. This issue has been patched in version 1.6.51.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-11-25 00:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-65018",
                        "url": "https://ubuntu.com/security/CVE-2025-65018",
                        "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. From version 1.6.0 to before 1.6.51, there is a heap buffer overflow vulnerability in the libpng simplified API function png_image_finish_read when processing 16-bit interlaced PNGs with 8-bit output format. Attacker-crafted interlaced PNG files cause heap writes beyond allocated buffer bounds. This issue has been patched in version 1.6.51.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-11-25 00:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-64505",
                                "url": "https://ubuntu.com/security/CVE-2025-64505",
                                "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. Prior to version 1.6.51, a heap buffer over-read vulnerability exists in libpng's png_do_quantize function when processing PNG files with malformed palette indices. The vulnerability occurs when palette_lookup array bounds are not validated against externally-supplied image data, allowing an attacker to craft a PNG file with out-of-range palette indices that trigger out-of-bounds memory access. This issue has been patched in version 1.6.51.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-11-25 00:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-64506",
                                "url": "https://ubuntu.com/security/CVE-2025-64506",
                                "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. From version 1.6.0 to before 1.6.51, a heap buffer over-read vulnerability exists in libpng's png_write_image_8bit function when processing 8-bit images through the simplified write API with convert_to_8bit enabled. The vulnerability affects 8-bit grayscale+alpha, RGB/RGBA, and images with incomplete row data. A conditional guard incorrectly allows 8-bit input to enter code expecting 16-bit input, causing reads up to 2 bytes beyond allocated buffer boundaries. This issue has been patched in version 1.6.51.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-11-25 00:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-64720",
                                "url": "https://ubuntu.com/security/CVE-2025-64720",
                                "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. From version 1.6.0 to before 1.6.51, an out-of-bounds read vulnerability exists in png_image_read_composite when processing palette images with PNG_FLAG_OPTIMIZE_ALPHA enabled. The palette compositing code in png_init_read_transformations incorrectly applies background compositing during premultiplication, violating the invariant component ≤ alpha × 257 required by the simplified PNG API. This issue has been patched in version 1.6.51.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-11-25 00:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-65018",
                                "url": "https://ubuntu.com/security/CVE-2025-65018",
                                "cve_description": "LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. From version 1.6.0 to before 1.6.51, there is a heap buffer overflow vulnerability in the libpng simplified API function png_image_finish_read when processing 16-bit interlaced PNGs with 8-bit output format. Attacker-crafted interlaced PNG files cause heap writes beyond allocated buffer bounds. This issue has been patched in version 1.6.51.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-11-25 00:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: buffer overflow issue",
                            "    - debian/patches/CVE-2025-64505.patch: Fix a buffer overflow in",
                            "      png_do_quantize",
                            "    - debian/patches/CVE-2025-64506.patch: Fix a heap buffer overflow in",
                            "      png_write_image_8bit",
                            "    - debian/patches/CVE-2025-64720.patch: Fix a buffer overflow in",
                            "      png_init_read_transformations",
                            "    - debian/patches/CVE-2025-65018.patch: Fix a heap buffer overflow in",
                            "      png_image_finish_read",
                            "    - CVE-2025-64505",
                            "    - CVE-2025-64506",
                            "    - CVE-2025-64720",
                            "    - CVE-2025-65018",
                            ""
                        ],
                        "package": "libpng1.6",
                        "version": "1.6.43-5ubuntu0.1",
                        "urgency": "medium",
                        "distributions": "noble-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Nishit Majithia <nishit.majithia@canonical.com>",
                        "date": "Tue, 09 Dec 2025 17:36:48 +0530"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-generic",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2128721
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-90.91",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:45:53 +0100"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-89.90",
                            "",
                            "  * missing transitionals for intel-iotg kernels (LP: #2128721)",
                            "    - [Packaging] Transition intel-iotg to hwe-24.04",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2128721
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 18:07:55 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-virtual",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2128721
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-90.91",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:45:53 +0100"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-89.90",
                            "",
                            "  * missing transitionals for intel-iotg kernels (LP: #2128721)",
                            "    - [Packaging] Transition intel-iotg to hwe-24.04",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2128721
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 18:07:55 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-virtual",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2128721
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-90.91",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:45:53 +0100"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-89.90",
                            "",
                            "  * missing transitionals for intel-iotg kernels (LP: #2128721)",
                            "    - [Packaging] Transition intel-iotg to hwe-24.04",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2128721
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 18:07:55 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-libc-dev:ppc64el",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-tools-common",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-virtual",
                "from_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "to_version": {
                    "source_package_name": "linux-meta",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2128721
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-90.91",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:45:53 +0100"
                    },
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 6.8.0-89.90",
                            "",
                            "  * missing transitionals for intel-iotg kernels (LP: #2128721)",
                            "    - [Packaging] Transition intel-iotg to hwe-24.04",
                            ""
                        ],
                        "package": "linux-meta",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2128721
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 18:07:55 +0100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "python-apt-common",
                "from_version": {
                    "source_package_name": "python-apt",
                    "source_package_version": "2.7.7ubuntu5",
                    "version": "2.7.7ubuntu5"
                },
                "to_version": {
                    "source_package_name": "python-apt",
                    "source_package_version": "2.7.7ubuntu5.1",
                    "version": "2.7.7ubuntu5.1"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-6966",
                        "url": "https://ubuntu.com/security/CVE-2025-6966",
                        "cve_description": "NULL pointer dereference in TagSection.keys() in python-apt on APT-based Linux systems allows a local attacker to cause a denial of service (process crash) via a crafted deb822 file with a malformed non-UTF-8 key.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-05 13:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2091865
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-6966",
                                "url": "https://ubuntu.com/security/CVE-2025-6966",
                                "cve_description": "NULL pointer dereference in TagSection.keys() in python-apt on APT-based Linux systems allows a local attacker to cause a denial of service (process crash) via a crafted deb822 file with a malformed non-UTF-8 key.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-05 13:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: NULL pointer dereference (LP: #2091865)",
                            "    - python/tag.cc: check for NULL pointer before dereferencing",
                            "    - CVE-2025-6966",
                            ""
                        ],
                        "package": "python-apt",
                        "version": "2.7.7ubuntu5.1",
                        "urgency": "medium",
                        "distributions": "noble-security",
                        "launchpad_bugs_fixed": [
                            2091865
                        ],
                        "author": "Sudhakar Verma <sudhakar.verma@canonical.com>",
                        "date": "Fri, 05 Dec 2025 22:45:54 +0530"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "python3-apt",
                "from_version": {
                    "source_package_name": "python-apt",
                    "source_package_version": "2.7.7ubuntu5",
                    "version": "2.7.7ubuntu5"
                },
                "to_version": {
                    "source_package_name": "python-apt",
                    "source_package_version": "2.7.7ubuntu5.1",
                    "version": "2.7.7ubuntu5.1"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-6966",
                        "url": "https://ubuntu.com/security/CVE-2025-6966",
                        "cve_description": "NULL pointer dereference in TagSection.keys() in python-apt on APT-based Linux systems allows a local attacker to cause a denial of service (process crash) via a crafted deb822 file with a malformed non-UTF-8 key.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-05 13:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2091865
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-6966",
                                "url": "https://ubuntu.com/security/CVE-2025-6966",
                                "cve_description": "NULL pointer dereference in TagSection.keys() in python-apt on APT-based Linux systems allows a local attacker to cause a denial of service (process crash) via a crafted deb822 file with a malformed non-UTF-8 key.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-05 13:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: NULL pointer dereference (LP: #2091865)",
                            "    - python/tag.cc: check for NULL pointer before dereferencing",
                            "    - CVE-2025-6966",
                            ""
                        ],
                        "package": "python-apt",
                        "version": "2.7.7ubuntu5.1",
                        "urgency": "medium",
                        "distributions": "noble-security",
                        "launchpad_bugs_fixed": [
                            2091865
                        ],
                        "author": "Sudhakar Verma <sudhakar.verma@canonical.com>",
                        "date": "Fri, 05 Dec 2025 22:45:54 +0530"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "python3-urllib3",
                "from_version": {
                    "source_package_name": "python-urllib3",
                    "source_package_version": "2.0.7-1ubuntu0.2",
                    "version": "2.0.7-1ubuntu0.2"
                },
                "to_version": {
                    "source_package_name": "python-urllib3",
                    "source_package_version": "2.0.7-1ubuntu0.3",
                    "version": "2.0.7-1ubuntu0.3"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-66418",
                        "url": "https://ubuntu.com/security/CVE-2025-66418",
                        "cve_description": "urllib3 is a user-friendly HTTP client library for Python. Starting in version 1.24 and prior to 2.6.0, the number of links in the decompression chain was unbounded allowing a malicious server to insert a virtually unlimited number of compression steps leading to high CPU usage and massive memory allocation for the decompressed data. This vulnerability is fixed in 2.6.0.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-05 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-66471",
                        "url": "https://ubuntu.com/security/CVE-2025-66471",
                        "cve_description": "urllib3 is a user-friendly HTTP client library for Python. Starting in version 1.0 and prior to 2.6.0, the Streaming API improperly handles highly compressed data. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. When streaming a compressed response, urllib3 can perform decoding or decompression based on the HTTP Content-Encoding header (e.g., gzip, deflate, br, or zstd). The library must read compressed data from the network and decompress it until the requested chunk size is met. Any resulting decompressed data that exceeds the requested amount is held in an internal buffer for the next read operation. The decompression logic could cause urllib3 to fully decode a small amount of highly compressed data in a single operation. This can result in excessive resource consumption (high CPU usage and massive memory allocation for the decompressed data.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-12-05 17:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-66418",
                                "url": "https://ubuntu.com/security/CVE-2025-66418",
                                "cve_description": "urllib3 is a user-friendly HTTP client library for Python. Starting in version 1.24 and prior to 2.6.0, the number of links in the decompression chain was unbounded allowing a malicious server to insert a virtually unlimited number of compression steps leading to high CPU usage and massive memory allocation for the decompressed data. This vulnerability is fixed in 2.6.0.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-05 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-66471",
                                "url": "https://ubuntu.com/security/CVE-2025-66471",
                                "cve_description": "urllib3 is a user-friendly HTTP client library for Python. Starting in version 1.0 and prior to 2.6.0, the Streaming API improperly handles highly compressed data. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. When streaming a compressed response, urllib3 can perform decoding or decompression based on the HTTP Content-Encoding header (e.g., gzip, deflate, br, or zstd). The library must read compressed data from the network and decompress it until the requested chunk size is met. Any resulting decompressed data that exceeds the requested amount is held in an internal buffer for the next read operation. The decompression logic could cause urllib3 to fully decode a small amount of highly compressed data in a single operation. This can result in excessive resource consumption (high CPU usage and massive memory allocation for the decompressed data.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-12-05 17:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: Denial of service due to unbounded decompression chain.",
                            "    - debian/patches/CVE-2025-66418.patch: Add max_decode_links limit and",
                            "      checks in src/urllib3/response.py. Add test in test/test_response.py.",
                            "    - CVE-2025-66418",
                            "  * SECURITY UPDATE: Denial of service due to decompression bomb.",
                            "    - debian/patches/CVE-2025-66471.patch: Fix decompression bomb in",
                            "      src/urllib3/response.py. Add tests in test/test_response.py.",
                            "    - debian/patches/CVE-2025-66471-post1.patch: Remove brotli version warning",
                            "      due to intrusive backport for brotli fixes and upstream version warning",
                            "      not being appropriate for distro backporting.",
                            "    - CVE-2025-66471",
                            ""
                        ],
                        "package": "python-urllib3",
                        "version": "2.0.7-1ubuntu0.3",
                        "urgency": "medium",
                        "distributions": "noble-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Hlib Korzhynskyy <hlib.korzhynskyy@canonical.com>",
                        "date": "Wed, 10 Dec 2025 15:56:11 -0330"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "added": {
        "deb": [
            {
                "name": "linux-headers-6.8.0-90",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": "linux-headers-6.8.0-90 version '6.8.0-90.91' (source package linux version '6.8.0-90.91') was added. linux-headers-6.8.0-90 version '6.8.0-90.91' has the same source package name, linux, as removed package linux-headers-6.8.0-88. As such we can use the source package version of the removed package, '6.8.0-88.89', 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-6.8.0-90-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": "linux-headers-6.8.0-90-generic version '6.8.0-90.91' (source package linux version '6.8.0-90.91') was added. linux-headers-6.8.0-90-generic version '6.8.0-90.91' has the same source package name, linux, as removed package linux-headers-6.8.0-88. As such we can use the source package version of the removed package, '6.8.0-88.89', 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-6.8.0-90-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": "linux-image-6.8.0-90-generic version '6.8.0-90.91' (source package linux version '6.8.0-90.91') was added. linux-image-6.8.0-90-generic version '6.8.0-90.91' has the same source package name, linux, as removed package linux-headers-6.8.0-88. As such we can use the source package version of the removed package, '6.8.0-88.89', 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-6.8.0-90-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": "linux-modules-6.8.0-90-generic version '6.8.0-90.91' (source package linux version '6.8.0-90.91') was added. linux-modules-6.8.0-90-generic version '6.8.0-90.91' has the same source package name, linux, as removed package linux-headers-6.8.0-88. As such we can use the source package version of the removed package, '6.8.0-88.89', 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-tools-6.8.0-90",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": "linux-tools-6.8.0-90 version '6.8.0-90.91' (source package linux version '6.8.0-90.91') was added. linux-tools-6.8.0-90 version '6.8.0-90.91' has the same source package name, linux, as removed package linux-headers-6.8.0-88. As such we can use the source package version of the removed package, '6.8.0-88.89', 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-tools-6.8.0-90-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-90.91",
                    "version": "6.8.0-90.91"
                },
                "cves": [
                    {
                        "cve": "CVE-2025-39993",
                        "url": "https://ubuntu.com/security/CVE-2025-39993",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-15 08:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-40018",
                        "url": "https://ubuntu.com/security/CVE-2025-40018",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-24 12:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-39964",
                        "url": "https://ubuntu.com/security/CVE-2025-39964",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-10-13 14:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37958",
                        "url": "https://ubuntu.com/security/CVE-2025-37958",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                        "cve_priority": "medium",
                        "cve_public_date": "2025-05-20 16:15:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-38666",
                        "url": "https://ubuntu.com/security/CVE-2025-38666",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                        "cve_priority": "high",
                        "cve_public_date": "2025-08-22 16:15:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2131785,
                    2131213,
                    2131481,
                    2130212,
                    2130552
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-90.91 -proposed tracker (LP: #2131785)",
                            "",
                            "  * cifs: Fix memory leak of a folio every call to cifs_writepages_begin()",
                            "    (LP: #2131213)",
                            "    - cifs: fix pagecache leak when do writepages",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-90.91",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131785,
                            2131213
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Tue, 18 Nov 2025 12:26:33 +0100"
                    },
                    {
                        "cves": [
                            {
                                "cve": "CVE-2025-39993",
                                "url": "https://ubuntu.com/security/CVE-2025-39993",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  media: rc: fix races with imon_disconnect()  Syzbot reports a KASAN issue as below: BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline] BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465  CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Call Trace:  <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 __create_pipe include/linux/usb.h:1945 [inline] send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627 vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991 vfs_write+0x2d7/0xdd0 fs/read_write.c:576 ksys_write+0x127/0x250 fs/read_write.c:631 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd  The iMON driver improperly releases the usb_device reference in imon_disconnect without coordinating with active users of the device.  Specifically, the fields usbdev_intf0 and usbdev_intf1 are not protected by the users counter (ictx->users). During probe, imon_init_intf0 or imon_init_intf1 increments the usb_device reference count depending on the interface. However, during disconnect, usb_put_dev is called unconditionally, regardless of actual usage.  As a result, if vfd_write or other operations are still in progress after disconnect, this can lead to a use-after-free of the usb_device pointer.  Thread 1 vfd_write                      Thread 2 imon_disconnect                                         ...                                         if                                           usb_put_dev(ictx->usbdev_intf0)                                         else                                           usb_put_dev(ictx->usbdev_intf1) ... while   send_packet     if       pipe = usb_sndintpipe(         ictx->usbdev_intf0) UAF     else       pipe = usb_sndctrlpipe(         ictx->usbdev_intf0, 0) UAF  Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by checking ictx->disconnected in all writer paths. Add early return with -ENODEV in send_packet(), vfd_write(), lcd_write() and display_open() if the device is no longer present.  Set and read ictx->disconnected under ictx->lock to ensure memory synchronization. Acquire the lock in imon_disconnect() before setting the flag to synchronize with any ongoing operations.  Ensure writers exit early and safely after disconnect before the USB core proceeds with cleanup.  Found by Linux Verification Center (linuxtesting.org) with Syzkaller.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-15 08:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-40018",
                                "url": "https://ubuntu.com/security/CVE-2025-40018",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  ipvs: Defer ip_vs_ftp unregister during netns cleanup  On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp before connections with valid cp->app pointers are flushed, leading to a use-after-free.  Fix this by introducing a global `exiting_module` flag, set to true in ip_vs_ftp_exit() before unregistering the pernet subsystem. In __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns cleanup (when exiting_module is false) and defer it to __ip_vs_cleanup_batch(), which unregisters all apps after all connections are flushed. If called during module exit, unregister ip_vs_ftp immediately.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-24 12:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-39964",
                                "url": "https://ubuntu.com/security/CVE-2025-39964",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg  Issuing two writes to the same af_alg socket is bogus as the data will be interleaved in an unpredictable fashion.  Furthermore, concurrent writes may create inconsistencies in the internal socket state.  Disallow this by adding a new ctx->write field that indiciates exclusive ownership for writing.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-10-13 14:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37958",
                                "url": "https://ubuntu.com/security/CVE-2025-37958",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  mm/huge_memory: fix dereferencing invalid pmd migration entry  When migrating a THP, concurrent access to the PMD migration entry during a deferred split scan can lead to an invalid address access, as illustrated below.  To prevent this invalid access, it is necessary to check the PMD migration entry and return early.  In this context, there is no need to use pmd_to_swp_entry and pfn_swap_entry_to_page to verify the equality of the target folio.  Since the PMD migration entry is locked, it cannot be served as the target.  Mailing list discussion and explanation from Hugh Dickins: \"An anon_vma lookup points to a location which may contain the folio of interest, but might instead contain another folio: and weeding out those other folios is precisely what the \"folio != pmd_folio((*pmd)\" check (and the \"risk of replacing the wrong folio\" comment a few lines above it) is for.\"  BUG: unable to handle page fault for address: ffffea60001db008 CPU: 0 UID: 0 PID: 2199114 Comm: tee Not tainted 6.14.0+ #4 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:split_huge_pmd_locked+0x3b5/0x2b60 Call Trace: <TASK> try_to_migrate_one+0x28c/0x3730 rmap_walk_anon+0x4f6/0x770 unmap_folio+0x196/0x1f0 split_huge_page_to_list_to_order+0x9f6/0x1560 deferred_split_scan+0xac5/0x12a0 shrinker_debugfs_scan_write+0x376/0x470 full_proxy_write+0x15c/0x220 vfs_write+0x2fc/0xcb0 ksys_write+0x146/0x250 do_syscall_64+0x6a/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e  The bug is found by syzkaller on an internal kernel, then confirmed on upstream.",
                                "cve_priority": "medium",
                                "cve_public_date": "2025-05-20 16:15:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-38666",
                                "url": "https://ubuntu.com/security/CVE-2025-38666",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net: appletalk: Fix use-after-free in AARP proxy probe  The AARP proxy‐probe routine (aarp_proxy_probe_network) sends a probe, releases the aarp_lock, sleeps, then re-acquires the lock.  During that window an expire timer thread (__aarp_expire_timer) can remove and kfree() the same entry, leading to a use-after-free.  race condition:           cpu 0                          |            cpu 1     atalk_sendmsg()                     |   atif_proxy_probe_device()     aarp_send_ddp()                     |   aarp_proxy_probe_network()     mod_timer()                         |   lock(aarp_lock) // LOCK!!     timeout around 200ms                |   alloc(aarp_entry)     and then call                       |   proxies[hash] = aarp_entry     aarp_expire_timeout()               |   aarp_send_probe()                                         |   unlock(aarp_lock) // UNLOCK!!     lock(aarp_lock) // LOCK!!           |   msleep(100);     __aarp_expire_timer(&proxies[ct])   |     free(aarp_entry)                    |     unlock(aarp_lock) // UNLOCK!!       |                                         |   lock(aarp_lock) // LOCK!!                                         |   UAF aarp_entry !!  ================================================================== BUG: KASAN: slab-use-after-free in aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493 Read of size 4 at addr ffff8880123aa360 by task repro/13278  CPU: 3 UID: 0 PID: 13278 Comm: repro Not tainted 6.15.2 #3 PREEMPT(full) 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:408 [inline]  print_report+0xc1/0x630 mm/kasan/report.c:521  kasan_report+0xca/0x100 mm/kasan/report.c:634  aarp_proxy_probe_network+0x560/0x630 net/appletalk/aarp.c:493  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  sock_do_ioctl+0xdc/0x260 net/socket.c:1190  sock_ioctl+0x239/0x6a0 net/socket.c:1311  vfs_ioctl fs/ioctl.c:51 [inline]  __do_sys_ioctl fs/ioctl.c:906 [inline]  __se_sys_ioctl fs/ioctl.c:892 [inline]  __x64_sys_ioctl+0x194/0x200 fs/ioctl.c:892  do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]  do_syscall_64+0xcb/0x250 arch/x86/entry/syscall_64.c:94  entry_SYSCALL_64_after_hwframe+0x77/0x7f  </TASK>  Allocated:  aarp_alloc net/appletalk/aarp.c:382 [inline]  aarp_proxy_probe_network+0xd8/0x630 net/appletalk/aarp.c:468  atif_proxy_probe_device net/appletalk/ddp.c:332 [inline]  atif_ioctl+0xb58/0x16c0 net/appletalk/ddp.c:857  atalk_ioctl+0x198/0x2f0 net/appletalk/ddp.c:1818  Freed:  kfree+0x148/0x4d0 mm/slub.c:4841  __aarp_expire net/appletalk/aarp.c:90 [inline]  __aarp_expire_timer net/appletalk/aarp.c:261 [inline]  aarp_expire_timeout+0x480/0x6e0 net/appletalk/aarp.c:317  The buggy address belongs to the object at ffff8880123aa300  which belongs to the cache kmalloc-192 of size 192 The buggy address is located 96 bytes inside of  freed 192-byte region [ffff8880123aa300, ffff8880123aa3c0)  Memory state around the buggy address:  ffff8880123aa200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ffff8880123aa280: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc >ffff8880123aa300: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb                                                        ^  ffff8880123aa380: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc  ffff8880123aa400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ==================================================================",
                                "cve_priority": "high",
                                "cve_public_date": "2025-08-22 16:15:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * noble/linux: 6.8.0-89.90 -proposed tracker (LP: #2131481)",
                            "",
                            "  * CVE-2025-39993",
                            "    - media: rc: fix races with imon_disconnect()",
                            "",
                            "  * Audio output fails on internal speakers when using kernel 6.8.0-84 and",
                            "    newer. (LP: #2130212)",
                            "    - Revert \"ASoC: cs35l56: Prevent races when soft-resetting using SPI",
                            "      control\"",
                            "",
                            "  * i40e driver is triggering VF resets on every link state change",
                            "    (LP: #2130552)",
                            "    - i40e: avoid redundant VF link state updates",
                            "",
                            "  * CVE-2025-40018",
                            "    - ipvs: Defer ip_vs_ftp unregister during netns cleanup",
                            "",
                            "  * CVE-2025-39964",
                            "    - crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg",
                            "    - crypto: af_alg - Fix incorrect boolean values in af_alg_ctx",
                            "",
                            "  * CVE-2025-37958",
                            "    - mm/huge_memory: fix dereferencing invalid pmd migration entry",
                            "",
                            "  * CVE-2025-38666",
                            "    - net: appletalk: Fix use-after-free in AARP proxy probe",
                            ""
                        ],
                        "package": "linux",
                        "version": "6.8.0-89.90",
                        "urgency": "medium",
                        "distributions": "noble",
                        "launchpad_bugs_fixed": [
                            2131481,
                            2130212,
                            2130552
                        ],
                        "author": "Manuel Diewald <manuel.diewald@canonical.com>",
                        "date": "Fri, 14 Nov 2025 17:51:25 +0100"
                    }
                ],
                "notes": "linux-tools-6.8.0-90-generic version '6.8.0-90.91' (source package linux version '6.8.0-90.91') was added. linux-tools-6.8.0-90-generic version '6.8.0-90.91' has the same source package name, linux, as removed package linux-headers-6.8.0-88. As such we can use the source package version of the removed package, '6.8.0-88.89', 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-6.8.0-88",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "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-6.8.0-88-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "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-6.8.0-88-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "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-6.8.0-88-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "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-tools-6.8.0-88",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "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-tools-6.8.0-88-generic",
                "from_version": {
                    "source_package_name": "linux",
                    "source_package_version": "6.8.0-88.89",
                    "version": "6.8.0-88.89"
                },
                "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 24.04 noble image from daily image serial 20251206 to 20251213",
    "from_series": "noble",
    "to_series": "noble",
    "from_serial": "20251206",
    "to_serial": "20251213",
    "from_manifest_filename": "daily_manifest.previous",
    "to_manifest_filename": "manifest.current"
}