{"id":"CVE-2023-54159","state":"PUBLISHED","title":"usb: mtu3: fix kernel panic at qmu transfer done irq handler","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: mtu3: fix kernel panic at qmu transfer done irq handler\n\nWhen handle qmu transfer irq, it will unlock @mtu->lock before give back\nrequest, if another thread handle disconnect event at the same time, and\ntry to disable ep, it may lock @mtu->lock and free qmu ring, then qmu\nirq hanlder may get a NULL gpd, avoid the KE by checking gpd's value before\nhandling it.\n\ne.g.\nqmu done irq on cpu0                 thread running on cpu1\n\nqmu_done_tx()\n  handle gpd [0]\n    mtu3_requ_complete()        mtu3_gadget_ep_disable()\n      unlock @mtu->lock\n        give back request         lock @mtu->lock\n                                    mtu3_ep_disable()\n                                      mtu3_gpd_ring_free()\n                                   unlock @mtu->lock\n      lock @mtu->lock\n    get next gpd [1]\n\n[1]: goto [0] to handle next gpd, and next gpd may be NULL.","publishedAt":"2025-12-24T13:07:08.207Z","updatedAt":"2026-05-11T19:56:37.853Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"26ca30516b2c49dd04c134cbdf122311c538df98","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"012936502a9cb7b0604e85bb961eb15e2bb40dd9","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"ee53a7a88027cea765c68f3b00a50b8f58d6f786","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"f26273428657ef4ca74740e578ae45a3be492f6f","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"b636aff94a67be46582d4321d11743f1a10cc2c1","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"3a7d4959560a2ee493ef222e3b63d359365f41ec","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"d28f4091ea7ec3510fd6a3c6d433234e7a2bef14","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/mtu3/mtu3_qmu.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.2","versionType":"semver"},{"version":"5.4.243","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.180","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.111","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.28","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2.15","status":"unaffected","lessThanOrEqual":"6.2.*","versionType":"semver"},{"version":"6.3.2","status":"unaffected","lessThanOrEqual":"6.3.*","versionType":"semver"},{"version":"6.4","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/mtu3/mtu3_qmu.c"]}],"references":["https://git.kernel.org/stable/c/26ca30516b2c49dd04c134cbdf122311c538df98","https://git.kernel.org/stable/c/012936502a9cb7b0604e85bb961eb15e2bb40dd9","https://git.kernel.org/stable/c/ee53a7a88027cea765c68f3b00a50b8f58d6f786","https://git.kernel.org/stable/c/f26273428657ef4ca74740e578ae45a3be492f6f","https://git.kernel.org/stable/c/b636aff94a67be46582d4321d11743f1a10cc2c1","https://git.kernel.org/stable/c/3a7d4959560a2ee493ef222e3b63d359365f41ec","https://git.kernel.org/stable/c/d28f4091ea7ec3510fd6a3c6d433234e7a2bef14"],"weaknesses":[],"ingestedAt":"2026-10-29T20:06:42.242Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2023/54xxx/CVE-2023-54159.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-54159","state":"PUBLISHED","datePublished":"2025-12-24T13:07:08.207Z","dateUpdated":"2026-05-11T19:56:37.853Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-12-24T13:02:52.531Z"},"containers":{"cna":{"title":"usb: mtu3: fix kernel panic at qmu transfer done irq handler","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: mtu3: fix kernel panic at qmu transfer done irq handler\n\nWhen handle qmu transfer irq, it will unlock @mtu->lock before give back\nrequest, if another thread handle disconnect event at the same time, and\ntry to disable ep, it may lock @mtu->lock and free qmu ring, then qmu\nirq hanlder may get a NULL gpd, avoid the KE by checking gpd's value before\nhandling it.\n\ne.g.\nqmu done irq on cpu0                 thread running on cpu1\n\nqmu_done_tx()\n  handle gpd [0]\n    mtu3_requ_complete()        mtu3_gadget_ep_disable()\n      unlock @mtu->lock\n        give back request         lock @mtu->lock\n                                    mtu3_ep_disable()\n                                      mtu3_gpd_ring_free()\n                                   unlock @mtu->lock\n      lock @mtu->lock\n    get next gpd [1]\n\n[1]: goto [0] to handle next gpd, and next gpd may be NULL."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"26ca30516b2c49dd04c134cbdf122311c538df98","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"012936502a9cb7b0604e85bb961eb15e2bb40dd9","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"ee53a7a88027cea765c68f3b00a50b8f58d6f786","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"f26273428657ef4ca74740e578ae45a3be492f6f","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"b636aff94a67be46582d4321d11743f1a10cc2c1","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"3a7d4959560a2ee493ef222e3b63d359365f41ec","versionType":"git"},{"version":"48e0d3735aa557a8adaf94632ca3cf78798e8505","status":"affected","lessThan":"d28f4091ea7ec3510fd6a3c6d433234e7a2bef14","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/mtu3/mtu3_qmu.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.2","versionType":"semver"},{"version":"5.4.243","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.180","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.111","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.28","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2.15","status":"unaffected","lessThanOrEqual":"6.2.*","versionType":"semver"},{"version":"6.3.2","status":"unaffected","lessThanOrEqual":"6.3.*","versionType":"semver"},{"version":"6.4","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/mtu3/mtu3_qmu.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/26ca30516b2c49dd04c134cbdf122311c538df98"},{"url":"https://git.kernel.org/stable/c/012936502a9cb7b0604e85bb961eb15e2bb40dd9"},{"url":"https://git.kernel.org/stable/c/ee53a7a88027cea765c68f3b00a50b8f58d6f786"},{"url":"https://git.kernel.org/stable/c/f26273428657ef4ca74740e578ae45a3be492f6f"},{"url":"https://git.kernel.org/stable/c/b636aff94a67be46582d4321d11743f1a10cc2c1"},{"url":"https://git.kernel.org/stable/c/3a7d4959560a2ee493ef222e3b63d359365f41ec"},{"url":"https://git.kernel.org/stable/c/d28f4091ea7ec3510fd6a3c6d433234e7a2bef14"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-11T19:56:37.853Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.4.243"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.10.180"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.15.111"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"6.1.28"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"6.2.15"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"6.3.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"6.4"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}