CVE-2026-98564
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: net: dsa: mt7530: leave the MDIO IRQ mappings to regmap-irq mt7530_remove_common() disposes the per-PHY interrupt mappings from .remove, but the regmap-irq chip that owns the domain is devm-registered, so its parent interrupt is only freed once .remove has returned. The switch's own regmap-irq thread can therefore still dispatch on a mapping that is already gone: irq_find_mapping() returns 0, irq_to_desc() returns NULL and handle_nested_irq() locks desc->lock without checking it. The attached PHYs have not given those interrupts back yet either, which the kernel warns about a moment before the fault. regmap_del_irq_chip() disposes the same mappings itself, after freeing the parent interrupt and before removing the domain, so there is nothing left for the driver to do here. Until it runs the descriptors stay alive, and a late dispatch on one of them is harmless: dsa_unregister_switch() has freed the PHY handlers by then, so handle_nested_irq() finds no action and returns.
View original CVE JSON
{
"id": "CVE-2026-98564",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-10-18T16:17:08.553",
"lastModified": "2026-10-19T10:19:13.047",
"vulnStatus": "Received",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: dsa: mt7530: leave the MDIO IRQ mappings to regmap-irq\n\nmt7530_remove_common() disposes the per-PHY interrupt mappings from\n.remove, but the regmap-irq chip that owns the domain is devm-registered,\nso its parent interrupt is only freed once .remove has returned. The\nswitch's own regmap-irq thread can therefore still dispatch on a mapping\nthat is already gone: irq_find_mapping() returns 0, irq_to_desc() returns\nNULL and handle_nested_irq() locks desc->lock without checking it. The\nattached PHYs have not given those interrupts back yet either, which the\nkernel warns about a moment before the fault.\n\nregmap_del_irq_chip() disposes the same mappings itself, after freeing the\nparent interrupt and before removing the domain, so there is nothing left\nfor the driver to do here. Until it runs the descriptors stay alive, and a\nlate dispatch on one of them is harmless: dsa_unregister_switch() has freed\nthe PHY handlers by then, so handle_nested_irq() finds no action and\nreturns."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"drivers/net/dsa/mt7530.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "254f6b272e3b67bf31c42ee9da62a449d74d1478",
"lessThan": "2357c682f6eaf639dec88c68b3c0c93a3b802635",
"versionType": "git",
"status": "affected"
},
{
"version": "254f6b272e3b67bf31c42ee9da62a449d74d1478",
"lessThan": "f306e465b5a2091cd3fe3dd0feb10cfc94cfb2f8",
"versionType": "git",
"status": "affected"
},
{
"version": "254f6b272e3b67bf31c42ee9da62a449d74d1478",
"lessThan": "0d80ba0a204c6a16bd7778b50de578dff107c0fe",
"versionType": "git",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"drivers/net/dsa/mt7530.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "6.15",
"status": "affected"
},
{
"version": "0",
"lessThan": "6.15",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.18.55",
"lessThanOrEqual": "6.18.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.2.9",
"lessThanOrEqual": "7.2.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.3",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {},
"references": [
{
"url": "https://git.kernel.org/stable/c/0d80ba0a204c6a16bd7778b50de578dff107c0fe",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/2357c682f6eaf639dec88c68b3c0c93a3b802635",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/f306e465b5a2091cd3fe3dd0feb10cfc94cfb2f8",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
]
}