In the Linux kernel, the following vulnerability has been resolved:
iommu/vt-d: Avoid memory allocation in iommu_suspend()
The iommususpend() syscore suspend callback is invoked with IRQ disabled. Allocating memory with the GFPKERNEL flag may re-enable IRQs during the suspend callback, which can cause intermittent suspend/hibernation problems with the following kernel traces:
Calling iommususpend+0x0/0x1d0 ------------[ cut here ]------------ WARNING: CPU: 0 PID: 15 at kernel/time/timekeeping.c:868 ktimeget+0x9b/0xb0 ... CPU: 0 PID: 15 Comm: rcupreempt Tainted: G U E 6.3-intel #r1 RIP: 0010:ktimeget+0x9b/0xb0 ... Call Trace: <IRQ> tickschedtimer+0x22/0x90 ? _pfxtickschedtimer+0x10/0x10 _hrtimerrunqueues+0x111/0x2b0 hrtimerinterrupt+0xfa/0x230 _sysvecapictimerinterrupt+0x63/0x140 sysvecapictimerinterrupt+0x7b/0xa0 </IRQ> <TASK> asmsysvecapictimerinterrupt+0x1f/0x30 ... ------------[ cut here ]------------ Interrupts enabled after iommususpend+0x0/0x1d0 WARNING: CPU: 0 PID: 27420 at drivers/base/syscore.c:68 syscoresuspend+0x147/0x270 CPU: 0 PID: 27420 Comm: rtcwake Tainted: G U W E 6.3-intel #r1 RIP: 0010:syscoresuspend+0x147/0x270 ... Call Trace: <TASK> hibernationsnapshot+0x25b/0x670 hibernate+0xcd/0x390 statestore+0xcf/0xe0 kobjattrstore+0x13/0x30 sysfskfwrite+0x3f/0x50 kernfsfopwriteiter+0x128/0x200 vfswrite+0x1fd/0x3c0 ksyswrite+0x6f/0xf0 _x64syswrite+0x1d/0x30 dosyscall64+0x3b/0x90 entrySYSCALL64afterhwframe+0x72/0xdc
Given that only 4 words memory is needed, avoid the memory allocation in iommu_suspend().
{ "vanir_signatures": [ { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "29523981632896910353329191004493210690", "145945798863568759113111497885378156657", "268314553979629973047803372797379083319", "65852851248605415735671746027358186729", "80486497731443500074942597522153742394", "243090170171819979248112159632359212407", "93277124136739506380729474854853763226", "178901220029825249659719213083626693279", "194125483901183926760936823436771355285", "171675359309686734777116786416072916902", "217588444369519934202884819144749815061", "4473328993679719218723335157548334191", "171573710483631593626482820625033810296", "293750799994773266239524882164513702911", "231804677005578597847527824449701175481", "50567455170983152814844652495694332538", "111554726942601092747985049145269344436", "97296717109793984239088904716676941625", "214615434542165966331489754699225699272", "102928361492850574065562843272408212559", "338317679358054780816035217765587726456" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c" }, "signature_type": "Line", "id": "CVE-2023-52559-316397fa" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "29523981632896910353329191004493210690", "145945798863568759113111497885378156657", "268314553979629973047803372797379083319", "65852851248605415735671746027358186729", "80486497731443500074942597522153742394", "243090170171819979248112159632359212407", "93277124136739506380729474854853763226", "178901220029825249659719213083626693279", "194125483901183926760936823436771355285", "171675359309686734777116786416072916902", "217588444369519934202884819144749815061", "4473328993679719218723335157548334191", "171573710483631593626482820625033810296", "293750799994773266239524882164513702911", "231804677005578597847527824449701175481", "50567455170983152814844652495694332538", "111554726942601092747985049145269344436", "97296717109793984239088904716676941625", "214615434542165966331489754699225699272", "102928361492850574065562843272408212559", "338317679358054780816035217765587726456" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c" }, "signature_type": "Line", "id": "CVE-2023-52559-31daf057" }, { "signature_version": "v1", "digest": { "length": 826.0, "function_hash": "101338020475614994663689482575383027022" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_resume" }, "signature_type": "Function", "id": "CVE-2023-52559-3d49d648" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "249085469344522929595236814335339356623", "292434841794978342158125740206398139489", "119881745959264158763980110348086842641", "273824173952866762901872023957793738440" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.h" }, "signature_type": "Line", "id": "CVE-2023-52559-4719df16" }, { "signature_version": "v1", "digest": { "length": 876.0, "function_hash": "69880479390447306784518560848011647450" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_suspend" }, "signature_type": "Function", "id": "CVE-2023-52559-5336194e" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "249085469344522929595236814335339356623", "292434841794978342158125740206398139489", "119881745959264158763980110348086842641", "273824173952866762901872023957793738440" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.h" }, "signature_type": "Line", "id": "CVE-2023-52559-54680512" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "29523981632896910353329191004493210690", "145945798863568759113111497885378156657", "268314553979629973047803372797379083319", "65852851248605415735671746027358186729", "80486497731443500074942597522153742394", "243090170171819979248112159632359212407", "93277124136739506380729474854853763226", "178901220029825249659719213083626693279", "194125483901183926760936823436771355285", "171675359309686734777116786416072916902", "217588444369519934202884819144749815061", "4473328993679719218723335157548334191", "171573710483631593626482820625033810296", "293750799994773266239524882164513702911", "231804677005578597847527824449701175481", "50567455170983152814844652495694332538", "111554726942601092747985049145269344436", "97296717109793984239088904716676941625", "214615434542165966331489754699225699272", "102928361492850574065562843272408212559", "338317679358054780816035217765587726456" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c" }, "signature_type": "Line", "id": "CVE-2023-52559-704709f7" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "249085469344522929595236814335339356623", "292434841794978342158125740206398139489", "119881745959264158763980110348086842641", "273824173952866762901872023957793738440" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e", "deprecated": false, "target": { "file": "include/linux/intel-iommu.h" }, "signature_type": "Line", "id": "CVE-2023-52559-729e849a" }, { "signature_version": "v1", "digest": { "length": 876.0, "function_hash": "69880479390447306784518560848011647450" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_suspend" }, "signature_type": "Function", "id": "CVE-2023-52559-7f43b5fb" }, { "signature_version": "v1", "digest": { "length": 876.0, "function_hash": "69880479390447306784518560848011647450" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_suspend" }, "signature_type": "Function", "id": "CVE-2023-52559-877eadd1" }, { "signature_version": "v1", "digest": { "length": 876.0, "function_hash": "69880479390447306784518560848011647450" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_suspend" }, "signature_type": "Function", "id": "CVE-2023-52559-a166eead" }, { "signature_version": "v1", "digest": { "length": 826.0, "function_hash": "101338020475614994663689482575383027022" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_resume" }, "signature_type": "Function", "id": "CVE-2023-52559-a888eeb2" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "249085469344522929595236814335339356623", "292434841794978342158125740206398139489", "119881745959264158763980110348086842641", "273824173952866762901872023957793738440" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.h" }, "signature_type": "Line", "id": "CVE-2023-52559-c5c8e2c9" }, { "signature_version": "v1", "digest": { "length": 826.0, "function_hash": "101338020475614994663689482575383027022" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_resume" }, "signature_type": "Function", "id": "CVE-2023-52559-d64d6db1" }, { "signature_version": "v1", "digest": { "threshold": 0.9, "line_hashes": [ "29523981632896910353329191004493210690", "145945798863568759113111497885378156657", "268314553979629973047803372797379083319", "65852851248605415735671746027358186729", "80486497731443500074942597522153742394", "243090170171819979248112159632359212407", "93277124136739506380729474854853763226", "178901220029825249659719213083626693279", "194125483901183926760936823436771355285", "171675359309686734777116786416072916902", "217588444369519934202884819144749815061", "4473328993679719218723335157548334191", "171573710483631593626482820625033810296", "293750799994773266239524882164513702911", "231804677005578597847527824449701175481", "50567455170983152814844652495694332538", "111554726942601092747985049145269344436", "97296717109793984239088904716676941625", "214615434542165966331489754699225699272", "102928361492850574065562843272408212559", "338317679358054780816035217765587726456" ] }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c" }, "signature_type": "Line", "id": "CVE-2023-52559-dcab30c7" }, { "signature_version": "v1", "digest": { "length": 826.0, "function_hash": "101338020475614994663689482575383027022" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e", "deprecated": false, "target": { "file": "drivers/iommu/intel/iommu.c", "function": "iommu_resume" }, "signature_type": "Function", "id": "CVE-2023-52559-e02f764f" } ] }