CVE-2026-97604 (GCVE-0-2026-97604)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:22 – Updated: 2026-09-25 10:22
VLAI
Title
fbdev: vfb: defer cleanup until the last reference
Summary
In the Linux kernel, the following vulnerability has been resolved: fbdev: vfb: defer cleanup until the last reference FBIOGETCMAP takes a shallow snapshot of info->cmap and performs the usercopy after dropping info->lock. vfb_remove() frees the colormap immediately after unregistering the framebuffer, even when an open file still holds a reference to fb_info. A concurrent driver unbind can therefore free the colormap while the ioctl copies it to userspace. KASAN reports: BUG: KASAN: slab-use-after-free in _copy_to_user Read of size 512 by task poc/125 _copy_to_user (./include/linux/instrumented.h:129 ./include/linux/uaccess.h:201 lib/usercopy.c:24) fb_cmap_to_user (./include/linux/uaccess.h:230 drivers/video/fbdev/core/fbcmap.c:211) do_fb_ioctl (drivers/video/fbdev/core/fb_chrdev.c:114) Allocated by task 1: fb_alloc_cmap_gfp (./include/linux/slab.h:973 ./include/linux/slab.h:1290 drivers/video/fbdev/core/fbcmap.c:108) vfb_probe (drivers/video/fbdev/vfb.c:459) Freed by task 124: fb_dealloc_cmap (drivers/video/fbdev/core/fbcmap.c:151) vfb_remove (drivers/video/fbdev/vfb.c:489) unregister_framebuffer() drops the registration reference, and fbdev calls fb_destroy after the last put_fb_info(). Move the registered framebuffer's cleanup into an fb_destroy callback so its colormap and screen buffer stay alive until all file references have been released.
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a , < 86356f13598f59f5acb1754895747dcdaf65a254 (git)
Affected: 5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a , < 5ff1effb047e465cde193d7df95988aa1520035e (git)
Affected: 5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a , < 3c91e51a53cf805e551e5dc8149cd0539a6dbb9d (git)
Affected: 5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a , < a0a34a40ed299c9c7cff6af163a5b883ee9d6d73 (git)
guessed Create a notification for this product.
Linux Linux Affected: 2.6.30
Unaffected: 0 , < 2.6.30 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/video/fbdev/vfb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "86356f13598f59f5acb1754895747dcdaf65a254",
              "status": "affected",
              "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
              "versionType": "git"
            },
            {
              "lessThan": "5ff1effb047e465cde193d7df95988aa1520035e",
              "status": "affected",
              "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
              "versionType": "git"
            },
            {
              "lessThan": "3c91e51a53cf805e551e5dc8149cd0539a6dbb9d",
              "status": "affected",
              "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
              "versionType": "git"
            },
            {
              "lessThan": "a0a34a40ed299c9c7cff6af163a5b883ee9d6d73",
              "status": "affected",
              "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/video/fbdev/vfb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.30"
            },
            {
              "lessThan": "2.6.30",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfbdev: vfb: defer cleanup until the last reference\n\nFBIOGETCMAP takes a shallow snapshot of info-\u003ecmap and performs the\nusercopy after dropping info-\u003elock. vfb_remove() frees the colormap\nimmediately after unregistering the framebuffer, even when an open file\nstill holds a reference to fb_info. A concurrent driver unbind can\ntherefore free the colormap while the ioctl copies it to userspace.\n\nKASAN reports:\n\n  BUG: KASAN: slab-use-after-free in _copy_to_user\n  Read of size 512 by task poc/125\n\n   _copy_to_user (./include/linux/instrumented.h:129 ./include/linux/uaccess.h:201 lib/usercopy.c:24)\n   fb_cmap_to_user (./include/linux/uaccess.h:230 drivers/video/fbdev/core/fbcmap.c:211)\n   do_fb_ioctl (drivers/video/fbdev/core/fb_chrdev.c:114)\n\n   Allocated by task 1:\n   fb_alloc_cmap_gfp (./include/linux/slab.h:973 ./include/linux/slab.h:1290 drivers/video/fbdev/core/fbcmap.c:108)\n   vfb_probe (drivers/video/fbdev/vfb.c:459)\n\n   Freed by task 124:\n   fb_dealloc_cmap (drivers/video/fbdev/core/fbcmap.c:151)\n   vfb_remove (drivers/video/fbdev/vfb.c:489)\n\nunregister_framebuffer() drops the registration reference, and fbdev calls\nfb_destroy after the last put_fb_info(). Move the registered framebuffer\u0027s\ncleanup into an fb_destroy callback so its colormap and screen buffer stay\nalive until all file references have been released."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T10:22:16.613Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/86356f13598f59f5acb1754895747dcdaf65a254"
        },
        {
          "url": "https://git.kernel.org/stable/c/5ff1effb047e465cde193d7df95988aa1520035e"
        },
        {
          "url": "https://git.kernel.org/stable/c/3c91e51a53cf805e551e5dc8149cd0539a6dbb9d"
        },
        {
          "url": "https://git.kernel.org/stable/c/a0a34a40ed299c9c7cff6af163a5b883ee9d6d73"
        }
      ],
      "title": "fbdev: vfb: defer cleanup until the last reference",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97604",
    "datePublished": "2026-09-25T10:22:16.613Z",
    "dateReserved": "2026-09-24T16:01:01.158Z",
    "dateUpdated": "2026-09-25T10:22:16.613Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97604",
      "date": "2026-09-28",
      "epss": "0.002",
      "percentile": "0.08791"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-28T00:11:05.000Z",
      "cve": "CVE-2026-97604",
      "id": "msrc_CVE-2026-97604",
      "initial_release_date": "2026-09-27T23:23:18.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "fbdev: vfb: defer cleanup until the last reference",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-97604.json",
      "version": "2"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/video/fbdev/vfb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "86356f13598f59f5acb1754895747dcdaf65a254",
                    "status": "affected",
                    "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "5ff1effb047e465cde193d7df95988aa1520035e",
                    "status": "affected",
                    "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3c91e51a53cf805e551e5dc8149cd0539a6dbb9d",
                    "status": "affected",
                    "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a0a34a40ed299c9c7cff6af163a5b883ee9d6d73",
                    "status": "affected",
                    "version": "5e266e2e0e19532c1b8e2e2bff1eb6ccf42e478a",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/video/fbdev/vfb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "2.6.30"
                  },
                  {
                    "lessThan": "2.6.30",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc3",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfbdev: vfb: defer cleanup until the last reference\n\nFBIOGETCMAP takes a shallow snapshot of info-\u003ecmap and performs the\nusercopy after dropping info-\u003elock. vfb_remove() frees the colormap\nimmediately after unregistering the framebuffer, even when an open file\nstill holds a reference to fb_info. A concurrent driver unbind can\ntherefore free the colormap while the ioctl copies it to userspace.\n\nKASAN reports:\n\n  BUG: KASAN: slab-use-after-free in _copy_to_user\n  Read of size 512 by task poc/125\n\n   _copy_to_user (./include/linux/instrumented.h:129 ./include/linux/uaccess.h:201 lib/usercopy.c:24)\n   fb_cmap_to_user (./include/linux/uaccess.h:230 drivers/video/fbdev/core/fbcmap.c:211)\n   do_fb_ioctl (drivers/video/fbdev/core/fb_chrdev.c:114)\n\n   Allocated by task 1:\n   fb_alloc_cmap_gfp (./include/linux/slab.h:973 ./include/linux/slab.h:1290 drivers/video/fbdev/core/fbcmap.c:108)\n   vfb_probe (drivers/video/fbdev/vfb.c:459)\n\n   Freed by task 124:\n   fb_dealloc_cmap (drivers/video/fbdev/core/fbcmap.c:151)\n   vfb_remove (drivers/video/fbdev/vfb.c:489)\n\nunregister_framebuffer() drops the registration reference, and fbdev calls\nfb_destroy after the last put_fb_info(). Move the registered framebuffer\u0027s\ncleanup into an fb_destroy callback so its colormap and screen buffer stay\nalive until all file references have been released."
          }
        ],
        "id": "CVE-2026-97604",
        "lastModified": "2026-09-25T11:17:14.407",
        "metrics": {},
        "published": "2026-09-25T11:17:14.407",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3c91e51a53cf805e551e5dc8149cd0539a6dbb9d"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/5ff1effb047e465cde193d7df95988aa1520035e"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/86356f13598f59f5acb1754895747dcdaf65a254"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a0a34a40ed299c9c7cff6af163a5b883ee9d6d73"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…