FKIE_CVE-2025-68296

Vulnerability from fkie_nvd - Published: 2025-12-16 16:16 - Updated: 2026-10-14 16:10
Severity
Summary
In the Linux kernel, the following vulnerability has been resolved: drm, fbcon, vga_switcheroo: Avoid race condition in fbcon setup Protect vga_switcheroo_client_fb_set() with console lock. Avoids OOB access in fbcon_remap_all(). Without holding the console lock the call races with switching outputs. VGA switcheroo calls fbcon_remap_all() when switching clients. The fbcon function uses struct fb_info.node, which is set by register_framebuffer(). As the fb-helper code currently sets up VGA switcheroo before registering the framebuffer, the value of node is -1 and therefore not a legal value. For example, fbcon uses the value within set_con2fb_map() [1] as an index into an array. Moving vga_switcheroo_client_fb_set() after register_framebuffer() can result in VGA switching that does not switch fbcon correctly. Therefore move vga_switcheroo_client_fb_set() under fbcon_fb_registered(), which already holds the console lock. Fbdev calls fbcon_fb_registered() from within register_framebuffer(). Serializes the helper with VGA switcheroo's call to fbcon_remap_all(). Although vga_switcheroo_client_fb_set() takes an instance of struct fb_info as parameter, it really only needs the contained fbcon state. Moving the call to fbcon initialization is therefore cleaner than before. Only amdgpu, i915, nouveau and radeon support vga_switcheroo. For all other drivers, this change does nothing.
Impacted products
Vendor Product Version

{
  "affected": [
    {
      "affectedData": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/drm_fb_helper.c",
            "drivers/video/fbdev/core/fbcon.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "711ebd961190def4c69ea24b2f0be75e995af24a",
              "status": "affected",
              "version": "6a9ee8af344e3bd7dbd61e67037096cdf7f83289",
              "versionType": "git"
            },
            {
              "lessThan": "482330f8261b4bea8146d9bd69c1199e5dfcbb5c",
              "status": "affected",
              "version": "6a9ee8af344e3bd7dbd61e67037096cdf7f83289",
              "versionType": "git"
            },
            {
              "lessThan": "05814c389b53d2f3a0b9eeb90ba7a05ba77c4c2a",
              "status": "affected",
              "version": "6a9ee8af344e3bd7dbd61e67037096cdf7f83289",
              "versionType": "git"
            },
            {
              "lessThan": "eb76d0f5553575599561010f24c277cc5b31d003",
              "status": "affected",
              "version": "6a9ee8af344e3bd7dbd61e67037096cdf7f83289",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/drm_fb_helper.c",
            "drivers/video/fbdev/core/fbcon.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.34"
            },
            {
              "lessThan": "2.6.34",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.143",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.61",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.17.*",
              "status": "unaffected",
              "version": "6.17.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.18",
              "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\ndrm, fbcon, vga_switcheroo: Avoid race condition in fbcon setup\n\nProtect vga_switcheroo_client_fb_set() with console lock. Avoids OOB\naccess in fbcon_remap_all(). Without holding the console lock the call\nraces with switching outputs.\n\nVGA switcheroo calls fbcon_remap_all() when switching clients. The fbcon\nfunction uses struct fb_info.node, which is set by register_framebuffer().\nAs the fb-helper code currently sets up VGA switcheroo before registering\nthe framebuffer, the value of node is -1 and therefore not a legal value.\nFor example, fbcon uses the value within set_con2fb_map() [1] as an index\ninto an array.\n\nMoving vga_switcheroo_client_fb_set() after register_framebuffer() can\nresult in VGA switching that does not switch fbcon correctly.\n\nTherefore move vga_switcheroo_client_fb_set() under fbcon_fb_registered(),\nwhich already holds the console lock. Fbdev calls fbcon_fb_registered()\nfrom within register_framebuffer(). Serializes the helper with VGA\nswitcheroo\u0027s call to fbcon_remap_all().\n\nAlthough vga_switcheroo_client_fb_set() takes an instance of struct fb_info\nas parameter, it really only needs the contained fbcon state. Moving the\ncall to fbcon initialization is therefore cleaner than before. Only amdgpu,\ni915, nouveau and radeon support vga_switcheroo. For all other drivers,\nthis change does nothing."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\ndrm, fbcon, vga_switcheroo: Evitar condici\u00f3n de carrera en la configuraci\u00f3n de fbcon\n\nProteger vga_switcheroo_client_fb_set() con el bloqueo de consola. Evita el acceso OOB en fbcon_remap_all(). Sin mantener el bloqueo de consola, la llamada entra en condici\u00f3n de carrera con el cambio de salidas.\n\nVGA switcheroo llama a fbcon_remap_all() al cambiar de clientes. La funci\u00f3n fbcon usa struct fb_info.node, que es establecido por register_framebuffer(). Como el c\u00f3digo del asistente de fb actualmente configura VGA switcheroo antes de registrar el framebuffer, el valor de node es -1 y por lo tanto no es un valor legal. Por ejemplo, fbcon usa el valor dentro de set_con2fb_map() [1] como un \u00edndice en un array.\n\nMover vga_switcheroo_client_fb_set() despu\u00e9s de register_framebuffer() puede resultar en un cambio de VGA que no cambia fbcon correctamente.\n\nPor lo tanto, mover vga_switcheroo_client_fb_set() bajo fbcon_fb_registered(), que ya mantiene el bloqueo de consola. Fbdev llama a fbcon_fb_registered() desde dentro de register_framebuffer(). Serializa el asistente con la llamada de VGA switcheroo a fbcon_remap_all().\n\nAunque vga_switcheroo_client_fb_set() toma una instancia de struct fb_info como par\u00e1metro, realmente solo necesita el estado fbcon contenido. Mover la llamada a la inicializaci\u00f3n de fbcon es por lo tanto m\u00e1s limpio que antes. Solo amdgpu, i915, nouveau y radeon soportan vga_switcheroo. Para todos los dem\u00e1s controladores, este cambio no hace nada."
    }
  ],
  "id": "CVE-2025-68296",
  "lastModified": "2026-10-14T16:10:00.250",
  "metrics": {},
  "published": "2025-12-16T16:16:08.540",
  "references": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/05814c389b53d2f3a0b9eeb90ba7a05ba77c4c2a"
    },
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/482330f8261b4bea8146d9bd69c1199e5dfcbb5c"
    },
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/711ebd961190def4c69ea24b2f0be75e995af24a"
    },
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "url": "https://git.kernel.org/stable/c/eb76d0f5553575599561010f24c277cc5b31d003"
    }
  ],
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "vulnStatus": "Deferred"
}



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…