{"api_version":"1","generated_at":"2026-09-17T14:06:47+00:00","cve":"CVE-2026-90024","urls":{"html":"https://cve.report/CVE-2026-90024","api":"https://cve.report/api/cve/CVE-2026-90024.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-90024","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-90024"},"summary":{"title":"usb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs\n\nA null-pointer dereference occurs in f_midi2_free_ep_reqs() when attempting\nto clean up an endpoint that was never initialized.\n\nWhen configuring the MIDI 2.0 gadget via configfs and setting the block\ndirection to SNDRV_UMP_DIR_INPUT, the initialization of the midi1_ep_out\nendpoint is explicitly skipped during the gadget bind phase\n(f_midi2_bind()). As a result, the usb_ep->card field remains NULL.\n\nLater, when the host sets the alternate setting, f_midi2_set_alt()\nunconditionally stops both the IN and OUT endpoints by calling\nf_midi2_stop_eps(), which in turn calls f_midi2_free_ep_reqs() for both\nendpoints. When f_midi2_free_ep_reqs() is called for the uninitialized\nmidi1_ep_out, it attempts to dereference usb_ep->card to determine the\nnumber of requests to free, leading to a crash.\n\nFix this by using usb_ep->num_reqs instead of usb_ep->card->info.num_reqs\nin f_midi2_free_ep_reqs(). usb_ep->num_reqs is correctly set during\nf_midi2_init_ep() and remains 0 if the endpoint was never initialized,\nsafely avoiding the loop. For consistency, apply the same change to\nf_midi2_alloc_ep_reqs().\n\nOops: general protection fault, probably for non-canonical address\n0xdffffc00000000ee: 0000 [#1] SMP KASAN NOPTI\nKASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777]\n...\nRIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166\n[inline]\nRIP: 0010:f_midi2_stop_eps+0x28e/0x4d0\ndrivers/usb/gadget/function/f_midi2.c:1246\n...\nCall Trace:\n <TASK>\n f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296\n composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933\n configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-16 11:17:15","updated_at":"2026-09-16 11:17:15"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/f0efaf1872949e96d213c8e910fd9517f7d7c406","name":"https://git.kernel.org/stable/c/f0efaf1872949e96d213c8e910fd9517f7d7c406","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/5b92f6a0c7c01efbb335d837ecdf34d38d98720f","name":"https://git.kernel.org/stable/c/5b92f6a0c7c01efbb335d837ecdf34d38d98720f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/4079f19a0e1ce76f1e21a398f02aca150ceaaf61","name":"https://git.kernel.org/stable/c/4079f19a0e1ce76f1e21a398f02aca150ceaaf61","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/51ddc55c75087ac25342f6d73d3aeaf14f59bd76","name":"https://git.kernel.org/stable/c/51ddc55c75087ac25342f6d73d3aeaf14f59bd76","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a","name":"https://git.kernel.org/stable/c/9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-90024","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-90024","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8b645922b22303cec4628dbbbf6c8553d1cdec87 51ddc55c75087ac25342f6d73d3aeaf14f59bd76 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8b645922b22303cec4628dbbbf6c8553d1cdec87 5b92f6a0c7c01efbb335d837ecdf34d38d98720f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8b645922b22303cec4628dbbbf6c8553d1cdec87 9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8b645922b22303cec4628dbbbf6c8553d1cdec87 4079f19a0e1ce76f1e21a398f02aca150ceaaf61 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 8b645922b22303cec4628dbbbf6c8553d1cdec87 f0efaf1872949e96d213c8e910fd9517f7d7c406 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.6","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.157 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.110 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.51 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.5 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/usb/gadget/function/f_midi2.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"51ddc55c75087ac25342f6d73d3aeaf14f59bd76","status":"affected","version":"8b645922b22303cec4628dbbbf6c8553d1cdec87","versionType":"git"},{"lessThan":"5b92f6a0c7c01efbb335d837ecdf34d38d98720f","status":"affected","version":"8b645922b22303cec4628dbbbf6c8553d1cdec87","versionType":"git"},{"lessThan":"9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a","status":"affected","version":"8b645922b22303cec4628dbbbf6c8553d1cdec87","versionType":"git"},{"lessThan":"4079f19a0e1ce76f1e21a398f02aca150ceaaf61","status":"affected","version":"8b645922b22303cec4628dbbbf6c8553d1cdec87","versionType":"git"},{"lessThan":"f0efaf1872949e96d213c8e910fd9517f7d7c406","status":"affected","version":"8b645922b22303cec4628dbbbf6c8553d1cdec87","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/usb/gadget/function/f_midi2.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.6"},{"lessThan":"6.6","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.157","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.110","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.51","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.157","versionStartIncluding":"6.6","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.110","versionStartIncluding":"6.6","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.51","versionStartIncluding":"6.6","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.5","versionStartIncluding":"6.6","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc2","versionStartIncluding":"6.6","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs\n\nA null-pointer dereference occurs in f_midi2_free_ep_reqs() when attempting\nto clean up an endpoint that was never initialized.\n\nWhen configuring the MIDI 2.0 gadget via configfs and setting the block\ndirection to SNDRV_UMP_DIR_INPUT, the initialization of the midi1_ep_out\nendpoint is explicitly skipped during the gadget bind phase\n(f_midi2_bind()). As a result, the usb_ep->card field remains NULL.\n\nLater, when the host sets the alternate setting, f_midi2_set_alt()\nunconditionally stops both the IN and OUT endpoints by calling\nf_midi2_stop_eps(), which in turn calls f_midi2_free_ep_reqs() for both\nendpoints. When f_midi2_free_ep_reqs() is called for the uninitialized\nmidi1_ep_out, it attempts to dereference usb_ep->card to determine the\nnumber of requests to free, leading to a crash.\n\nFix this by using usb_ep->num_reqs instead of usb_ep->card->info.num_reqs\nin f_midi2_free_ep_reqs(). usb_ep->num_reqs is correctly set during\nf_midi2_init_ep() and remains 0 if the endpoint was never initialized,\nsafely avoiding the loop. For consistency, apply the same change to\nf_midi2_alloc_ep_reqs().\n\nOops: general protection fault, probably for non-canonical address\n0xdffffc00000000ee: 0000 [#1] SMP KASAN NOPTI\nKASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777]\n...\nRIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166\n[inline]\nRIP: 0010:f_midi2_stop_eps+0x28e/0x4d0\ndrivers/usb/gadget/function/f_midi2.c:1246\n...\nCall Trace:\n <TASK>\n f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296\n composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933\n configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877"}],"providerMetadata":{"dateUpdated":"2026-09-16T10:33:27.624Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/51ddc55c75087ac25342f6d73d3aeaf14f59bd76"},{"url":"https://git.kernel.org/stable/c/5b92f6a0c7c01efbb335d837ecdf34d38d98720f"},{"url":"https://git.kernel.org/stable/c/9c3d5091e3568ed48ac4c5b08a78eb06fad0d70a"},{"url":"https://git.kernel.org/stable/c/4079f19a0e1ce76f1e21a398f02aca150ceaaf61"},{"url":"https://git.kernel.org/stable/c/f0efaf1872949e96d213c8e910fd9517f7d7c406"}],"title":"usb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-90024","datePublished":"2026-09-16T10:33:27.624Z","dateReserved":"2026-09-11T19:38:34.782Z","dateUpdated":"2026-09-16T10:33:27.624Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-16 11:17:15","lastModifiedDate":"2026-09-16 11:17:15","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"90024","Ordinal":"1","Title":"usb: gadget: midi2: Fix null-pointer dereference in f_midi2_free","CVE":"CVE-2026-90024","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"90024","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs\n\nA null-pointer dereference occurs in f_midi2_free_ep_reqs() when attempting\nto clean up an endpoint that was never initialized.\n\nWhen configuring the MIDI 2.0 gadget via configfs and setting the block\ndirection to SNDRV_UMP_DIR_INPUT, the initialization of the midi1_ep_out\nendpoint is explicitly skipped during the gadget bind phase\n(f_midi2_bind()). As a result, the usb_ep->card field remains NULL.\n\nLater, when the host sets the alternate setting, f_midi2_set_alt()\nunconditionally stops both the IN and OUT endpoints by calling\nf_midi2_stop_eps(), which in turn calls f_midi2_free_ep_reqs() for both\nendpoints. When f_midi2_free_ep_reqs() is called for the uninitialized\nmidi1_ep_out, it attempts to dereference usb_ep->card to determine the\nnumber of requests to free, leading to a crash.\n\nFix this by using usb_ep->num_reqs instead of usb_ep->card->info.num_reqs\nin f_midi2_free_ep_reqs(). usb_ep->num_reqs is correctly set during\nf_midi2_init_ep() and remains 0 if the endpoint was never initialized,\nsafely avoiding the loop. For consistency, apply the same change to\nf_midi2_alloc_ep_reqs().\n\nOops: general protection fault, probably for non-canonical address\n0xdffffc00000000ee: 0000 [#1] SMP KASAN NOPTI\nKASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777]\n...\nRIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166\n[inline]\nRIP: 0010:f_midi2_stop_eps+0x28e/0x4d0\ndrivers/usb/gadget/function/f_midi2.c:1246\n...\nCall Trace:\n <TASK>\n f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296\n composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933\n configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877","Type":"Description","Title":"usb: gadget: midi2: Fix null-pointer dereference in f_midi2_free"}]}}}