« Volver al listado

CVE-2023-54259

Estado: AplazadaSin puntuar—

In the Linux kernel, the following vulnerability has been resolved:

soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow

Change calls to pm_runtime_resume_and_get() back to pm_runtime_get_sync(). This fixes a usage count underrun caused by doing a pm_runtime_put() even though pm_runtime_resume_and_get() returned an error.

The three affected functions ignore -EACCES error from trying to get pm_runtime, and carry on, including a put at the end of the function. But pm_runtime_resume_and_get() does not increment the usage count if it returns an error. So in the -EACCES case you must not call pm_runtime_put().

Leer descripción completaMostrar menos

The documentation for pm_runtime_get_sync() says: "Consider using pm_runtime_resume_and_get() ... as this is likely to result in cleaner code."

In this case I don't think it results in cleaner code because the pm_runtime_put() at the end of the function would have to be conditional on the return value from pm_runtime_resume_and_get() at the top of the function.

pm_runtime_get_sync() doesn't have this problem because it always increments the count, so always needs a put. The code can just flow through and do the pm_runtime_put() unconditionally.

Detalles técnicos trazas, registros y código del informe original
This reverts commit
443a98e649b4 ("soundwire: bus: use pm_runtime_resume_and_get()")

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2023-54259",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "443a98e649b469b4e6a2832799853a5764ef9002",
              "lessThan": "4e5e9da139c007dfc397a159093b4c4187ee67fa",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "443a98e649b469b4e6a2832799853a5764ef9002",
              "lessThan": "203aa4374c433159f163acde2d0bd4118f23bbaf",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "443a98e649b469b4e6a2832799853a5764ef9002",
              "lessThan": "e9537962519e88969f5f69cd0571eb4f6984403c",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "drivers/soundwire/bus.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.19"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "5.19",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.1.30",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "status": "unaffected",
              "version": "6.3.4",
              "versionType": "semver",
              "lessThanOrEqual": "6.3.*"
            },
            {
              "status": "unaffected",
              "version": "6.4",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "drivers/soundwire/bus.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2025-12-30T13:16:14.670",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/203aa4374c433159f163acde2d0bd4118f23bbaf",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/4e5e9da139c007dfc397a159093b4c4187ee67fa",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e9537962519e88969f5f69cd0571eb4f6984403c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Deferred",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsoundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow\n\nThis reverts commit\n443a98e649b4 (\"soundwire: bus: use pm_runtime_resume_and_get()\")\n\nChange calls to pm_runtime_resume_and_get() back to pm_runtime_get_sync().\nThis fixes a usage count underrun caused by doing a pm_runtime_put() even\nthough pm_runtime_resume_and_get() returned an error.\n\nThe three affected functions ignore -EACCES error from trying to get\npm_runtime, and carry on, including a put at the end of the function.\nBut pm_runtime_resume_and_get() does not increment the usage count if it\nreturns an error. So in the -EACCES case you must not call\npm_runtime_put().\n\nThe documentation for pm_runtime_get_sync() says:\n \"Consider using pm_runtime_resume_and_get() ...  as this is likely to\n result in cleaner code.\"\n\nIn this case I don't think it results in cleaner code because the\npm_runtime_put() at the end of the function would have to be conditional on\nthe return value from pm_runtime_resume_and_get() at the top of the\nfunction.\n\npm_runtime_get_sync() doesn't have this problem because it always\nincrements the count, so always needs a put. The code can just flow through\nand do the pm_runtime_put() unconditionally."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nsoundwire: bus: Corrige pm_runtime_put() desequilibrado que causa un subdesbordamiento del contador de uso\n\nEsto revierte el commit\n443a98e649b4 ('soundwire: bus: usa pm_runtime_resume_and_get()')\n\nCambia las llamadas a pm_runtime_resume_and_get() de vuelta a pm_runtime_get_sync(). Esto corrige un subdesbordamiento del contador de uso causado por realizar un pm_runtime_put() incluso si pm_runtime_resume_and_get() devolvió un error.\n\nLas tres funciones afectadas ignoran el error -EACCES al intentar obtener pm_runtime, y continúan, incluyendo un put al final de la función. Pero pm_runtime_resume_and_get() no incrementa el contador de uso si devuelve un error. Así que en el caso de -EACCES no se debe llamar a pm_runtime_put().\n\nLa documentación de pm_runtime_get_sync() dice:\n 'Considere usar pm_runtime_resume_and_get() ... ya que esto probablemente resultará en un código más limpio.'\n\nEn este caso no creo que resulte en un código más limpio porque el pm_runtime_put() al final de la función tendría que ser condicional al valor de retorno de pm_runtime_resume_and_get() al principio de la función.\n\npm_runtime_get_sync() no tiene este problema porque siempre incrementa el contador, por lo que siempre necesita un put. El código puede simplemente fluir y realizar el pm_runtime_put() incondicionalmente."
    }
  ],
  "lastModified": "2026-06-17T06:47:06.637",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}