CVE-2023-54259 (GCVE-0-2023-54259)

Vulnerability from cvelistv5 – Published: 2025-12-30 12:15 – Updated: 2026-05-11 19:58
VLAI
Title
soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow
Summary
In the Linux kernel, the following vulnerability has been resolved: soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow This reverts commit 443a98e649b4 ("soundwire: bus: use pm_runtime_resume_and_get()") 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(). 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.
Severity
No CVSS data available.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 7034 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 443a98e649b469b4e6a2832799853a5764ef9002 , < 4e5e9da139c007dfc397a159093b4c4187ee67fa (git)
Affected: 443a98e649b469b4e6a2832799853a5764ef9002 , < 203aa4374c433159f163acde2d0bd4118f23bbaf (git)
Affected: 443a98e649b469b4e6a2832799853a5764ef9002 , < e9537962519e88969f5f69cd0571eb4f6984403c (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.19
Unaffected: 0 , < 5.19 (semver)
Unaffected: 6.1.30 , ≤ 6.1.* (semver)
Unaffected: 6.3.4 , ≤ 6.3.* (semver)
Unaffected: 6.4 , ≤ * (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/soundwire/bus.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4e5e9da139c007dfc397a159093b4c4187ee67fa",
              "status": "affected",
              "version": "443a98e649b469b4e6a2832799853a5764ef9002",
              "versionType": "git"
            },
            {
              "lessThan": "203aa4374c433159f163acde2d0bd4118f23bbaf",
              "status": "affected",
              "version": "443a98e649b469b4e6a2832799853a5764ef9002",
              "versionType": "git"
            },
            {
              "lessThan": "e9537962519e88969f5f69cd0571eb4f6984403c",
              "status": "affected",
              "version": "443a98e649b469b4e6a2832799853a5764ef9002",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/soundwire/bus.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.19"
            },
            {
              "lessThan": "5.19",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.30",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.3.*",
              "status": "unaffected",
              "version": "6.3.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.30",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3.4",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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\u0027t 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\u0027t 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."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-05-11T19:58:30.911Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4e5e9da139c007dfc397a159093b4c4187ee67fa"
        },
        {
          "url": "https://git.kernel.org/stable/c/203aa4374c433159f163acde2d0bd4118f23bbaf"
        },
        {
          "url": "https://git.kernel.org/stable/c/e9537962519e88969f5f69cd0571eb4f6984403c"
        }
      ],
      "title": "soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54259",
    "datePublished": "2025-12-30T12:15:53.540Z",
    "dateReserved": "2025-12-30T12:06:44.516Z",
    "dateUpdated": "2026-05-11T19:58:30.911Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-54259",
      "date": "2026-10-28",
      "epss": "0.00198",
      "percentile": "0.09532"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/soundwire/bus.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "4e5e9da139c007dfc397a159093b4c4187ee67fa",
                    "status": "affected",
                    "version": "443a98e649b469b4e6a2832799853a5764ef9002",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "203aa4374c433159f163acde2d0bd4118f23bbaf",
                    "status": "affected",
                    "version": "443a98e649b469b4e6a2832799853a5764ef9002",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e9537962519e88969f5f69cd0571eb4f6984403c",
                    "status": "affected",
                    "version": "443a98e649b469b4e6a2832799853a5764ef9002",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/soundwire/bus.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.19"
                  },
                  {
                    "lessThan": "5.19",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.30",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.3.*",
                    "status": "unaffected",
                    "version": "6.3.4",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.4",
                    "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\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\u0027t 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\u0027t 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 (\u0027soundwire: bus: usa pm_runtime_resume_and_get()\u0027)\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\u00f3 un error.\n\nLas tres funciones afectadas ignoran el error -EACCES al intentar obtener pm_runtime, y contin\u00faan, incluyendo un put al final de la funci\u00f3n. Pero pm_runtime_resume_and_get() no incrementa el contador de uso si devuelve un error. As\u00ed que en el caso de -EACCES no se debe llamar a pm_runtime_put().\n\nLa documentaci\u00f3n de pm_runtime_get_sync() dice:\n \u0027Considere usar pm_runtime_resume_and_get() ... ya que esto probablemente resultar\u00e1 en un c\u00f3digo m\u00e1s limpio.\u0027\n\nEn este caso no creo que resulte en un c\u00f3digo m\u00e1s limpio porque el pm_runtime_put() al final de la funci\u00f3n tendr\u00eda que ser condicional al valor de retorno de pm_runtime_resume_and_get() al principio de la funci\u00f3n.\n\npm_runtime_get_sync() no tiene este problema porque siempre incrementa el contador, por lo que siempre necesita un put. El c\u00f3digo puede simplemente fluir y realizar el pm_runtime_put() incondicionalmente."
          }
        ],
        "id": "CVE-2023-54259",
        "lastModified": "2026-06-17T06:47:06.637",
        "metrics": {},
        "published": "2025-12-30T13:16:14.670",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "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"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Deferred"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-22T03:03:53+00:00",
      "cve": "CVE-2023-54259",
      "id": "CVE-2023-54259",
      "initial_release_date": "2023-01-01T00:00:00+00:00",
      "product_status:fixed": "120",
      "product_status:known_affected": "124",
      "product_status:known_not_affected": "118",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54259.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-29T02:03:02Z",
      "cve": "CVE-2023-54259",
      "id": "CVE-2023-54259",
      "initial_release_date": "2025-12-31T00:27:19Z",
      "product_status:known_affected": "67",
      "product_status:known_not_affected": "493",
      "product_status:recommended": "49",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2023-54259",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2023-54259.json",
      "version": "14"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

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.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
How durations are calculated

Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.

Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.

Events included in the timeline

Loading timeline…


    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.