CVE-2023-53054 (GCVE-0-2023-53054)
Vulnerability from cvelistv5
Published
2025-05-02 15:55
Modified
2025-05-04 12:50
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: usb: dwc2: fix a devres leak in hw_enable upon suspend resume Each time the platform goes to low power, PM suspend / resume routines call: __dwc2_lowlevel_hw_enable -> devm_add_action_or_reset(). This adds a new devres each time. This may also happen at runtime, as dwc2_lowlevel_hw_enable() can be called from udc_start(). This can be seen with tracing: - echo 1 > /sys/kernel/debug/tracing/events/dev/devres_log/enable - go to low power - cat /sys/kernel/debug/tracing/trace A new "ADD" entry is found upon each low power cycle: ... devres_log: 49000000.usb-otg ADD 82a13bba devm_action_release (8 bytes) ... devres_log: 49000000.usb-otg ADD 49889daf devm_action_release (8 bytes) ... A second issue is addressed here: - regulator_bulk_enable() is called upon each PM cycle (suspend/resume). - regulator_bulk_disable() never gets called. So the reference count for these regulators constantly increase, by one upon each low power cycle, due to missing regulator_bulk_disable() call in __dwc2_lowlevel_hw_disable(). The original fix that introduced the devm_add_action_or_reset() call, fixed an issue during probe, that happens due to other errors in dwc2_driver_probe() -> dwc2_core_reset(). Then the probe fails without disabling regulators, when dr_mode == USB_DR_MODE_PERIPHERAL. Rather fix the error path: disable all the low level hardware in the error path, by using the "hsotg->ll_hw_enabled" flag. Checking dr_mode has been introduced to avoid a dual call to dwc2_lowlevel_hw_disable(). "ll_hw_enabled" should achieve the same (and is used currently in the remove() routine).
Impacted products
Vendor Product Version
Linux Linux Version: 33a06f1300a79cfd461cea0268f05e969d4f34ec
Version: 33a06f1300a79cfd461cea0268f05e969d4f34ec
Version: 33a06f1300a79cfd461cea0268f05e969d4f34ec
Version: 33a06f1300a79cfd461cea0268f05e969d4f34ec
Version: 33a06f1300a79cfd461cea0268f05e969d4f34ec
Version: c95e1f67b9a84479d1a6d2e9b123a1553af2a75e
Version: 7d2a4749e1589295c69183f7d79d5b62664b34d6
Version: 8a8841b9f3eb1f46e3fc6d56a9b9299c53f4f86f
Version: fa7fd9ba18533e9aa5f718a06de3deb522a4b587
Version: b2c2b88b049684b89776036f9a03fcc2d1bb3c22
Version: e7c4b79d70a70b4b7b0a04c640238a2ef0a7a8c8
Version: 88dcd13872b11bd60e6d4cb6317821e1d367e524
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/usb/dwc2/platform.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "1f01027c51eb16145e8e07fafea3ca07ef102d06",
              "status": "affected",
              "version": "33a06f1300a79cfd461cea0268f05e969d4f34ec",
              "versionType": "git"
            },
            {
              "lessThan": "cba76e1fb896b573f09f51aa299223276a77bc90",
              "status": "affected",
              "version": "33a06f1300a79cfd461cea0268f05e969d4f34ec",
              "versionType": "git"
            },
            {
              "lessThan": "ffb8ab6f87bd28d700ab5c20d9d3a7e75067630d",
              "status": "affected",
              "version": "33a06f1300a79cfd461cea0268f05e969d4f34ec",
              "versionType": "git"
            },
            {
              "lessThan": "6485fc381b6528b6f547ee1ff10bdbcbe31a6e4c",
              "status": "affected",
              "version": "33a06f1300a79cfd461cea0268f05e969d4f34ec",
              "versionType": "git"
            },
            {
              "lessThan": "f747313249b74f323ddf841a9c8db14d989f296a",
              "status": "affected",
              "version": "33a06f1300a79cfd461cea0268f05e969d4f34ec",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c95e1f67b9a84479d1a6d2e9b123a1553af2a75e",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "7d2a4749e1589295c69183f7d79d5b62664b34d6",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8a8841b9f3eb1f46e3fc6d56a9b9299c53f4f86f",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "fa7fd9ba18533e9aa5f718a06de3deb522a4b587",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "b2c2b88b049684b89776036f9a03fcc2d1bb3c22",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "e7c4b79d70a70b4b7b0a04c640238a2ef0a7a8c8",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "88dcd13872b11bd60e6d4cb6317821e1d367e524",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/usb/dwc2/platform.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.9"
            },
            {
              "lessThan": "5.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.177",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.105",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.22",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.177",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.105",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.22",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.9",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3",
                  "versionStartIncluding": "5.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.4.233",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.9.233",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.14.194",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.19.140",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.4.59",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.7.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.8.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: dwc2: fix a devres leak in hw_enable upon suspend resume\n\nEach time the platform goes to low power, PM suspend / resume routines\ncall: __dwc2_lowlevel_hw_enable -\u003e devm_add_action_or_reset().\nThis adds a new devres each time.\nThis may also happen at runtime, as dwc2_lowlevel_hw_enable() can be\ncalled from udc_start().\n\nThis can be seen with tracing:\n- echo 1 \u003e /sys/kernel/debug/tracing/events/dev/devres_log/enable\n- go to low power\n- cat /sys/kernel/debug/tracing/trace\n\nA new \"ADD\" entry is found upon each low power cycle:\n... devres_log: 49000000.usb-otg ADD 82a13bba devm_action_release (8 bytes)\n... devres_log: 49000000.usb-otg ADD 49889daf devm_action_release (8 bytes)\n...\n\nA second issue is addressed here:\n- regulator_bulk_enable() is called upon each PM cycle (suspend/resume).\n- regulator_bulk_disable() never gets called.\n\nSo the reference count for these regulators constantly increase, by one\nupon each low power cycle, due to missing regulator_bulk_disable() call\nin __dwc2_lowlevel_hw_disable().\n\nThe original fix that introduced the devm_add_action_or_reset() call,\nfixed an issue during probe, that happens due to other errors in\ndwc2_driver_probe() -\u003e dwc2_core_reset(). Then the probe fails without\ndisabling regulators, when dr_mode == USB_DR_MODE_PERIPHERAL.\n\nRather fix the error path: disable all the low level hardware in the\nerror path, by using the \"hsotg-\u003ell_hw_enabled\" flag. Checking dr_mode\nhas been introduced to avoid a dual call to dwc2_lowlevel_hw_disable().\n\"ll_hw_enabled\" should achieve the same (and is used currently in the\nremove() routine)."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2025-05-04T12:50:11.518Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/1f01027c51eb16145e8e07fafea3ca07ef102d06"
        },
        {
          "url": "https://git.kernel.org/stable/c/cba76e1fb896b573f09f51aa299223276a77bc90"
        },
        {
          "url": "https://git.kernel.org/stable/c/ffb8ab6f87bd28d700ab5c20d9d3a7e75067630d"
        },
        {
          "url": "https://git.kernel.org/stable/c/6485fc381b6528b6f547ee1ff10bdbcbe31a6e4c"
        },
        {
          "url": "https://git.kernel.org/stable/c/f747313249b74f323ddf841a9c8db14d989f296a"
        }
      ],
      "title": "usb: dwc2: fix a devres leak in hw_enable upon suspend resume",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-53054",
    "datePublished": "2025-05-02T15:55:09.354Z",
    "dateReserved": "2025-05-02T15:51:43.546Z",
    "dateUpdated": "2025-05-04T12:50:11.518Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-53054\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-05-02T16:15:24.483\",\"lastModified\":\"2025-05-05T20:54:45.973\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nusb: dwc2: fix a devres leak in hw_enable upon suspend resume\\n\\nEach time the platform goes to low power, PM suspend / resume routines\\ncall: __dwc2_lowlevel_hw_enable -\u003e devm_add_action_or_reset().\\nThis adds a new devres each time.\\nThis may also happen at runtime, as dwc2_lowlevel_hw_enable() can be\\ncalled from udc_start().\\n\\nThis can be seen with tracing:\\n- echo 1 \u003e /sys/kernel/debug/tracing/events/dev/devres_log/enable\\n- go to low power\\n- cat /sys/kernel/debug/tracing/trace\\n\\nA new \\\"ADD\\\" entry is found upon each low power cycle:\\n... devres_log: 49000000.usb-otg ADD 82a13bba devm_action_release (8 bytes)\\n... devres_log: 49000000.usb-otg ADD 49889daf devm_action_release (8 bytes)\\n...\\n\\nA second issue is addressed here:\\n- regulator_bulk_enable() is called upon each PM cycle (suspend/resume).\\n- regulator_bulk_disable() never gets called.\\n\\nSo the reference count for these regulators constantly increase, by one\\nupon each low power cycle, due to missing regulator_bulk_disable() call\\nin __dwc2_lowlevel_hw_disable().\\n\\nThe original fix that introduced the devm_add_action_or_reset() call,\\nfixed an issue during probe, that happens due to other errors in\\ndwc2_driver_probe() -\u003e dwc2_core_reset(). Then the probe fails without\\ndisabling regulators, when dr_mode == USB_DR_MODE_PERIPHERAL.\\n\\nRather fix the error path: disable all the low level hardware in the\\nerror path, by using the \\\"hsotg-\u003ell_hw_enabled\\\" flag. Checking dr_mode\\nhas been introduced to avoid a dual call to dwc2_lowlevel_hw_disable().\\n\\\"ll_hw_enabled\\\" should achieve the same (and is used currently in the\\nremove() routine).\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: usb: dwc2: se corrige una fuga de devres en hw_enable al reanudar la suspensi\u00f3n. Cada vez que la plataforma pasa a bajo consumo, las rutinas de suspensi\u00f3n/reinicio de PM llaman a __dwc2_lowlevel_hw_enable -\u0026gt; devm_add_action_or_reset(). Esto agrega un nuevo devres cada vez. Esto tambi\u00e9n puede ocurrir en tiempo de ejecuci\u00f3n, ya que dwc2_lowlevel_hw_enable() puede llamarse desde udc_start(). Esto se puede ver con el seguimiento: - echo 1 \u0026gt; /sys/kernel/debug/tracing/events/dev/devres_log/enable - ir a bajo consumo - cat /sys/kernel/debug/tracing/trace Se encuentra una nueva entrada \\\"ADD\\\" en cada ciclo de bajo consumo: ... devres_log: 49000000.usb-otg ADD 82a13bba devm_action_release (8 bytes) ... devres_log: 49000000.usb-otg ADD 49889daf devm_action_release (8 bytes) ... Aqu\u00ed se aborda un segundo problema: - regulator_bulk_enable() se llama en cada ciclo de PM (suspender/reanudar). - regulator_bulk_disable() nunca se llama. Por lo tanto, el recuento de referencias para estos reguladores aumenta constantemente, en uno con cada ciclo de bajo consumo, debido a la falta de la llamada a regulator_bulk_disable() en __dwc2_lowlevel_hw_disable(). La correcci\u00f3n original, que introdujo la llamada a devm_add_action_or_reset(), solucion\u00f3 un problema durante el sondeo que se produce debido a otros errores en dwc2_driver_probe() -\u0026gt; dwc2_core_reset(). En ese caso, el sondeo falla sin deshabilitar los reguladores cuando dr_mode == USB_DR_MODE_PERIPHERAL. Mejor soluci\u00f3n: deshabilite todo el hardware de bajo nivel en la ruta de error mediante el indicador \\\"hsotg-\u0026gt;ll_hw_enabled\\\". Se ha introducido la comprobaci\u00f3n de dr_mode para evitar una llamada dual a dwc2_lowlevel_hw_disable(). \\\"ll_hw_enabled\\\" deber\u00eda lograr el mismo efecto (y se utiliza actualmente en la rutina remove()).\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1f01027c51eb16145e8e07fafea3ca07ef102d06\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6485fc381b6528b6f547ee1ff10bdbcbe31a6e4c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/cba76e1fb896b573f09f51aa299223276a77bc90\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f747313249b74f323ddf841a9c8db14d989f296a\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ffb8ab6f87bd28d700ab5c20d9d3a7e75067630d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…