In the Linux kernel, the following vulnerability has been resolved:
vfio/pci: Lock external INTx masking ops
Mask operations through config space changes to DisINTx may race INTx configuration changes via ioctl. Create wrappers that add locking for paths outside of the core interrupt code.
In particular, irqtype is updated holding igate, therefore testing isintx() requires holding igate. For example clearing DisINTx from config space can otherwise race changes of the interrupt configuration.
This aligns interfaces which may trigger the INTx eventfd into two camps, one side serialized by igate and the other only enabled while INTx is configured. A subsequent patch introduces synchronization for the latter flows.
[
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_mask"
},
"digest": {
"length": 465.0,
"function_hash": "41743517067655720419714417799619551879"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3fe0ac10bd117df847c93408a9d428a453cd60e5",
"signature_version": "v1",
"id": "CVE-2024-26810-015d1880"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_unmask"
},
"digest": {
"length": 101.0,
"function_hash": "256593731592797406654347662946614419357"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3dd9be6cb55e0f47544e7cdda486413f7134e3b3",
"signature_version": "v1",
"id": "CVE-2024-26810-043b5913"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c"
},
"digest": {
"line_hashes": [
"51519474312862878269925737834218221400",
"165587830998774638835660854368376352622",
"35941879000997809938068126430816320476",
"26202131071645734757051924519404034840",
"256182366994219111255251570048165174723",
"65187038965644668536236238513624213953",
"3861709604324517437375188096727337389",
"184686446423324847573864241244406843137",
"283750652145723861151671675599068551799",
"53842131636068469530538849767258424639",
"311275336652223658187100550642528615094",
"279366667314062475727830859898162437397",
"314757354004559855125204935895960335825",
"268572649755316348768031320149749774796",
"284359325651070311425567109846575459608",
"206956962079356923170529994051150741672",
"37597960267030750566057198576947754028",
"308993651774779406373850134496949849103",
"230392308046306444526159112097447732719",
"7955936690994351672385480132048444287",
"163937742262459492928139264336048359503",
"283271924773908883520498321388643517673",
"177041618296401713856954484117405431454",
"157289398041514744713632712116234032731",
"222646944398390790920563438855338273441",
"17049949340325418574484106661705898225",
"94695407675117606917402795458273187040",
"26717592047068858589741340993644113754",
"85314583090335438385565182241515822387",
"132710595432099425957223644025822361516",
"249038224487710349560647365448195409838",
"25117442044473443050908538068603693491",
"331711333636603909569457851653284330131",
"255588019997877572608266547593109308357",
"252701889633935062171400156404897201784",
"214643337592621861436051286252480280161"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@810cd4bb53456d0503cc4e7934e063835152c1b7",
"signature_version": "v1",
"id": "CVE-2024-26810-251cdaa3"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_mask"
},
"digest": {
"length": 552.0,
"function_hash": "173549617164691849407543244394236059058"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@03505e3344b0576fd619416793a31eae9c5b73bf",
"signature_version": "v1",
"id": "CVE-2024-26810-42d66cb0"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_unmask"
},
"digest": {
"length": 101.0,
"function_hash": "256593731592797406654347662946614419357"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@810cd4bb53456d0503cc4e7934e063835152c1b7",
"signature_version": "v1",
"id": "CVE-2024-26810-4d8ced89"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_mask"
},
"digest": {
"length": 552.0,
"function_hash": "173549617164691849407543244394236059058"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@810cd4bb53456d0503cc4e7934e063835152c1b7",
"signature_version": "v1",
"id": "CVE-2024-26810-545efa84"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_unmask"
},
"digest": {
"length": 101.0,
"function_hash": "256593731592797406654347662946614419357"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3fe0ac10bd117df847c93408a9d428a453cd60e5",
"signature_version": "v1",
"id": "CVE-2024-26810-5a767d3d"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_unmask"
},
"digest": {
"length": 101.0,
"function_hash": "256593731592797406654347662946614419357"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@03505e3344b0576fd619416793a31eae9c5b73bf",
"signature_version": "v1",
"id": "CVE-2024-26810-66751ec5"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c"
},
"digest": {
"line_hashes": [
"51519474312862878269925737834218221400",
"165587830998774638835660854368376352622",
"35941879000997809938068126430816320476",
"26202131071645734757051924519404034840",
"256182366994219111255251570048165174723",
"65187038965644668536236238513624213953",
"3861709604324517437375188096727337389",
"184686446423324847573864241244406843137",
"283750652145723861151671675599068551799",
"53842131636068469530538849767258424639",
"311275336652223658187100550642528615094",
"279366667314062475727830859898162437397",
"314757354004559855125204935895960335825",
"268572649755316348768031320149749774796",
"284359325651070311425567109846575459608",
"206956962079356923170529994051150741672",
"37597960267030750566057198576947754028",
"308993651774779406373850134496949849103",
"230392308046306444526159112097447732719",
"7955936690994351672385480132048444287",
"163937742262459492928139264336048359503",
"283271924773908883520498321388643517673",
"177041618296401713856954484117405431454",
"157289398041514744713632712116234032731",
"222646944398390790920563438855338273441",
"17049949340325418574484106661705898225",
"94695407675117606917402795458273187040",
"26717592047068858589741340993644113754",
"85314583090335438385565182241515822387",
"132710595432099425957223644025822361516",
"249038224487710349560647365448195409838",
"25117442044473443050908538068603693491",
"331711333636603909569457851653284330131",
"255588019997877572608266547593109308357",
"252701889633935062171400156404897201784",
"214643337592621861436051286252480280161"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@03505e3344b0576fd619416793a31eae9c5b73bf",
"signature_version": "v1",
"id": "CVE-2024-26810-7b4adb93"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_mask"
},
"digest": {
"length": 419.0,
"function_hash": "319487506396552185600216321915922710282"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ec73e079729258a05452356cf6d098bf1504d5a6",
"signature_version": "v1",
"id": "CVE-2024-26810-a74e24d3"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c"
},
"digest": {
"line_hashes": [
"98054964931279088125337399488059600942",
"172380619716579917450746020362707524646",
"325330477780885330566685611029554720807",
"299052236895240584355180350569195989874",
"189420053600297937999921546796391575923",
"21464817547154209670542249354083839251",
"278424794043632988556708807008629406026",
"263974468249486429800410960630718074433",
"299594487232622357162358248379500558135",
"279366667314062475727830859898162437397",
"314757354004559855125204935895960335825",
"268572649755316348768031320149749774796",
"284359325651070311425567109846575459608",
"206956962079356923170529994051150741672",
"37597960267030750566057198576947754028",
"308993651774779406373850134496949849103",
"230392308046306444526159112097447732719",
"7955936690994351672385480132048444287",
"163937742262459492928139264336048359503",
"283271924773908883520498321388643517673",
"177041618296401713856954484117405431454",
"157289398041514744713632712116234032731",
"222646944398390790920563438855338273441",
"17049949340325418574484106661705898225",
"315878960979135758523315282838582199424",
"298611453807574598447789159981802986425",
"85314583090335438385565182241515822387",
"132710595432099425957223644025822361516",
"249038224487710349560647365448195409838",
"25117442044473443050908538068603693491",
"331711333636603909569457851653284330131",
"255588019997877572608266547593109308357",
"252701889633935062171400156404897201784",
"214643337592621861436051286252480280161"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ec73e079729258a05452356cf6d098bf1504d5a6",
"signature_version": "v1",
"id": "CVE-2024-26810-b075d7bd"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_mask"
},
"digest": {
"length": 419.0,
"function_hash": "319487506396552185600216321915922710282"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3dd9be6cb55e0f47544e7cdda486413f7134e3b3",
"signature_version": "v1",
"id": "CVE-2024-26810-b8488d0b"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c",
"function": "vfio_pci_intx_unmask"
},
"digest": {
"length": 101.0,
"function_hash": "256593731592797406654347662946614419357"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ec73e079729258a05452356cf6d098bf1504d5a6",
"signature_version": "v1",
"id": "CVE-2024-26810-d33355fd"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c"
},
"digest": {
"line_hashes": [
"250751120764813233316395015574466035495",
"39013729847209462858126897303881337276",
"281007483059386617016390629231181474236",
"9518930131578263298778082929836210496",
"189420053600297937999921546796391575923",
"21464817547154209670542249354083839251",
"278424794043632988556708807008629406026",
"263974468249486429800410960630718074433",
"299594487232622357162358248379500558135",
"315083457740563057322374436338248887741",
"188801609088555439892068135476719294030",
"332777758137528947343888629063805078007",
"103472727053313342062547962227485126556",
"196160059561619443751487725899370547925",
"37597960267030750566057198576947754028",
"308993651774779406373850134496949849103",
"230392308046306444526159112097447732719",
"11231473652225754671136248717122982972",
"163937742262459492928139264336048359503",
"283271924773908883520498321388643517673",
"177041618296401713856954484117405431454",
"157289398041514744713632712116234032731",
"222646944398390790920563438855338273441",
"17049949340325418574484106661705898225",
"315878960979135758523315282838582199424",
"298611453807574598447789159981802986425",
"85314583090335438385565182241515822387",
"132710595432099425957223644025822361516",
"249038224487710349560647365448195409838",
"25117442044473443050908538068603693491",
"331711333636603909569457851653284330131",
"255588019997877572608266547593109308357",
"252701889633935062171400156404897201784",
"214643337592621861436051286252480280161"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3dd9be6cb55e0f47544e7cdda486413f7134e3b3",
"signature_version": "v1",
"id": "CVE-2024-26810-d8881dbe"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/vfio/pci/vfio_pci_intrs.c"
},
"digest": {
"line_hashes": [
"242417040064426895838598383633414335520",
"213265478090852457686966070642911184128",
"35941879000997809938068126430816320476",
"337076391617483969272788545127364174865",
"7415437337195838853521124418467957260",
"282226264131262038223214356275689750874",
"184686446423324847573864241244406843137",
"283750652145723861151671675599068551799",
"53842131636068469530538849767258424639",
"311275336652223658187100550642528615094",
"279366667314062475727830859898162437397",
"314757354004559855125204935895960335825",
"268572649755316348768031320149749774796",
"284359325651070311425567109846575459608",
"206956962079356923170529994051150741672",
"37597960267030750566057198576947754028",
"308993651774779406373850134496949849103",
"230392308046306444526159112097447732719",
"7955936690994351672385480132048444287",
"163937742262459492928139264336048359503",
"283271924773908883520498321388643517673",
"177041618296401713856954484117405431454",
"157289398041514744713632712116234032731",
"222646944398390790920563438855338273441",
"17049949340325418574484106661705898225",
"315878960979135758523315282838582199424",
"298611453807574598447789159981802986425",
"85314583090335438385565182241515822387",
"132710595432099425957223644025822361516",
"249038224487710349560647365448195409838",
"25117442044473443050908538068603693491",
"331711333636603909569457851653284330131",
"255588019997877572608266547593109308357",
"252701889633935062171400156404897201784",
"214643337592621861436051286252480280161"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3fe0ac10bd117df847c93408a9d428a453cd60e5",
"signature_version": "v1",
"id": "CVE-2024-26810-e379da46"
}
]