{"id":"CVE-2026-64430","state":"PUBLISHED","title":"NTB: epf: Avoid calling pci_irq_vector() from hardirq context","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nNTB: epf: Avoid calling pci_irq_vector() from hardirq context\n\nntb_epf_vec_isr() calls pci_irq_vector() in hardirq context to derive\nthe vector number. pci_irq_vector() calls msi_get_virq() that takes a\nmutex and can therefore trigger \"scheduling while atomic\" splats:\n\n  BUG: scheduling while atomic: kworker/u33:0/55/0x00010001\n  ...\n  Call trace:\n   ...\n   schedule+0x38/0x110\n   schedule_preempt_disabled+0x28/0x50\n   __mutex_lock.constprop.0+0x848/0x908\n   __mutex_lock_slowpath+0x18/0x30\n   mutex_lock+0x4c/0x60\n   msi_domain_get_virq+0xe8/0x138\n   pci_irq_vector+0x2c/0x60\n   ntb_epf_vec_isr+0x28/0x120 [ntb_hw_epf]\n   __handle_irq_event_percpu+0x70/0x3a8\n   handle_irq_event+0x48/0x100\n   handle_edge_irq+0x100/0x1c8\n   ...\n\nCache the Linux IRQ number for vector 0 when vectors are allocated and\nuse it as a base in the ISR. Running the ISR in a threaded IRQ handler\nwould also avoid the problem, but that would be unnecessary here.","publishedAt":"2026-07-25T08:51:06.612Z","updatedAt":"2026-08-17T04:55:30.939Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"33bba331a4a5fee8b6026fe72eca13cceeec1b7b","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"aff271b12a1eb8c8b3da19223ae1a6abe1e8168b","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"1dba8444ac0100133d72374634f6d7451fff1ccc","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"174a97f21bf9c54fa37ec0f321692e862ea130a3","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"f71e8d9875069fa73e335f63f02ec6e52e3aaa51","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"6350df503897d57c5634f71b0767d48c3b837583","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"4dcddc1c794d1c65eda68f1f8dd04a0fecc0870f","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/ntb/hw/epf/ntb_hw_epf.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.12","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.12","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.96","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.39","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.4","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/ntb/hw/epf/ntb_hw_epf.c"]}],"references":["https://git.kernel.org/stable/c/33bba331a4a5fee8b6026fe72eca13cceeec1b7b","https://git.kernel.org/stable/c/aff271b12a1eb8c8b3da19223ae1a6abe1e8168b","https://git.kernel.org/stable/c/1dba8444ac0100133d72374634f6d7451fff1ccc","https://git.kernel.org/stable/c/174a97f21bf9c54fa37ec0f321692e862ea130a3","https://git.kernel.org/stable/c/f71e8d9875069fa73e335f63f02ec6e52e3aaa51","https://git.kernel.org/stable/c/6350df503897d57c5634f71b0767d48c3b837583","https://git.kernel.org/stable/c/4dcddc1c794d1c65eda68f1f8dd04a0fecc0870f"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:41.951Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/64xxx/CVE-2026-64430.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64430","state":"PUBLISHED","datePublished":"2026-07-25T08:51:06.612Z","dateUpdated":"2026-08-17T04:55:30.939Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-19T15:36:31.787Z"},"containers":{"cna":{"title":"NTB: epf: Avoid calling pci_irq_vector() from hardirq context","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nNTB: epf: Avoid calling pci_irq_vector() from hardirq context\n\nntb_epf_vec_isr() calls pci_irq_vector() in hardirq context to derive\nthe vector number. pci_irq_vector() calls msi_get_virq() that takes a\nmutex and can therefore trigger \"scheduling while atomic\" splats:\n\n  BUG: scheduling while atomic: kworker/u33:0/55/0x00010001\n  ...\n  Call trace:\n   ...\n   schedule+0x38/0x110\n   schedule_preempt_disabled+0x28/0x50\n   __mutex_lock.constprop.0+0x848/0x908\n   __mutex_lock_slowpath+0x18/0x30\n   mutex_lock+0x4c/0x60\n   msi_domain_get_virq+0xe8/0x138\n   pci_irq_vector+0x2c/0x60\n   ntb_epf_vec_isr+0x28/0x120 [ntb_hw_epf]\n   __handle_irq_event_percpu+0x70/0x3a8\n   handle_irq_event+0x48/0x100\n   handle_edge_irq+0x100/0x1c8\n   ...\n\nCache the Linux IRQ number for vector 0 when vectors are allocated and\nuse it as a base in the ISR. Running the ISR in a threaded IRQ handler\nwould also avoid the problem, but that would be unnecessary here."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"33bba331a4a5fee8b6026fe72eca13cceeec1b7b","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"aff271b12a1eb8c8b3da19223ae1a6abe1e8168b","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"1dba8444ac0100133d72374634f6d7451fff1ccc","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"174a97f21bf9c54fa37ec0f321692e862ea130a3","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"f71e8d9875069fa73e335f63f02ec6e52e3aaa51","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"6350df503897d57c5634f71b0767d48c3b837583","versionType":"git"},{"version":"812ce2f8d14ea791edd88c36ebcc9017bf4c88cb","status":"affected","lessThan":"4dcddc1c794d1c65eda68f1f8dd04a0fecc0870f","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/ntb/hw/epf/ntb_hw_epf.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.12","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.12","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.96","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.39","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.4","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/ntb/hw/epf/ntb_hw_epf.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/33bba331a4a5fee8b6026fe72eca13cceeec1b7b"},{"url":"https://git.kernel.org/stable/c/aff271b12a1eb8c8b3da19223ae1a6abe1e8168b"},{"url":"https://git.kernel.org/stable/c/1dba8444ac0100133d72374634f6d7451fff1ccc"},{"url":"https://git.kernel.org/stable/c/174a97f21bf9c54fa37ec0f321692e862ea130a3"},{"url":"https://git.kernel.org/stable/c/f71e8d9875069fa73e335f63f02ec6e52e3aaa51"},{"url":"https://git.kernel.org/stable/c/6350df503897d57c5634f71b0767d48c3b837583"},{"url":"https://git.kernel.org/stable/c/4dcddc1c794d1c65eda68f1f8dd04a0fecc0870f"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:N - Routed traffic over the standard NTB Netdev interface causes the peer host to ring the victim's PCIe MSI/MSI-X doorbell, so an unauthenticated remote sender can reach the vulnerable interrupt handler.\nAC:L - Every delivered doorbell enters the sleep-capable MSI lookup, and the attacker can repeatedly or concurrently trigger multiple allocated vectors to drive mutex contention.\nPR:N - NTB Netdev traffic and peer doorbells have no victim-side authentication or capability check, so an unauthenticated network sender needs no privileges.\nUI:N - Once the NTB link is deployed, receiving traffic automatically invokes the hardirq handler without victim user action.\nS:U - The resulting failure affects the vulnerable host kernel itself and does not cross a VM, IOMMU, or other security-authority boundary.\nC:N - The bug performs no out-of-bounds access or disclosure and provides no kernel-memory read primitive.\nI:N - The defect is an illegal sleep and mutex wait in hardirq context, with no memory corruption, arbitrary write, or data-modification primitive.\nA:H - Mutex contention in hardirq context can cause scheduling-while-atomic failures, deadlock or hang, and a kernel panic on hardened panic-on-warning systems."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-17T04:55:30.939Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"6.12.96"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"6.18.39"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"7.1.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.12","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}