GHSA-HC2C-96RF-CQVJ

Vulnerability from github – Published: 2026-09-24 18:31 – Updated: 2026-09-24 18:31
VLAI
Details

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

usb: gadget: goku_udc: avoid NULL deref of dev->driver in INT_USBRESET log

goku_irq() handles a number of bus events under a single ep0 path. It already guards the gadget driver suspend/resume callbacks against a NULL ->driver:

if (dev->gadget.speed != USB_SPEED_UNKNOWN
        && dev->driver
        && dev->driver->resume) {
    spin_unlock(&dev->lock);
    dev->driver->resume(&dev->gadget);
    ...
}

but the very next branch unconditionally dereferences dev->driver when an INT_USBRESET arrives:

if (stat & INT_USBRESET) {
    ACK(INT_USBRESET);
    INFO(dev, "USB reset done, gadget %s\n",
        dev->driver->driver.name);
}

If the controller raises INT_USBRESET before any gadget driver has been bound (or after one has been unbound), dev->driver is NULL and the printk dereferences NULL.

smatch flags the inconsistency:

drivers/usb/gadget/udc/goku_udc.c:1618 goku_irq() error: we previously assumed 'dev->driver' could be null (see line 1607)

Fall back to a placeholder when the gadget driver is not bound.

No functional change while a gadget driver is bound.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2026-97482"
  ],
  "database_specific": {
    "cwe_ids": [],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-09-24T17:17:25Z",
    "severity": null
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: goku_udc: avoid NULL deref of dev-\u003edriver in INT_USBRESET log\n\ngoku_irq() handles a number of bus events under a single ep0 path.\nIt already guards the gadget driver suspend/resume callbacks against a\nNULL -\u003edriver:\n\n\tif (dev-\u003egadget.speed != USB_SPEED_UNKNOWN\n\t\t\t\u0026\u0026 dev-\u003edriver\n\t\t\t\u0026\u0026 dev-\u003edriver-\u003eresume) {\n\t\tspin_unlock(\u0026dev-\u003elock);\n\t\tdev-\u003edriver-\u003eresume(\u0026dev-\u003egadget);\n\t\t...\n\t}\n\nbut the very next branch unconditionally dereferences dev-\u003edriver\nwhen an INT_USBRESET arrives:\n\n\tif (stat \u0026 INT_USBRESET) {\n\t\tACK(INT_USBRESET);\n\t\tINFO(dev, \"USB reset done, gadget %s\\n\",\n\t\t\tdev-\u003edriver-\u003edriver.name);\n\t}\n\nIf the controller raises INT_USBRESET before any gadget driver has\nbeen bound (or after one has been unbound), dev-\u003edriver is NULL and\nthe printk dereferences NULL.\n\nsmatch flags the inconsistency:\n\n  drivers/usb/gadget/udc/goku_udc.c:1618 goku_irq() error:\n  we previously assumed \u0027dev-\u003edriver\u0027 could be null (see line 1607)\n\nFall back to a placeholder when the gadget driver is not bound.\n\nNo functional change while a gadget driver is bound.",
  "id": "GHSA-hc2c-96rf-cqvj",
  "modified": "2026-09-24T18:31:34Z",
  "published": "2026-09-24T18:31:34Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-97482"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/10d7fc3008d5b7ec03af8e08927f1d090014c2af"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/28d78783a871cdb7a637dcb72452ff7d303430ae"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/5bf5e3fba9bc7dfd69701521dbe9809f8ccbdb02"
    }
  ],
  "schema_version": "1.4.0",
  "severity": []
}



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…