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().
[
{
"id": "CVE-2023-52559-316397fa",
"target": {
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"29523981632896910353329191004493210690",
"145945798863568759113111497885378156657",
"268314553979629973047803372797379083319",
"65852851248605415735671746027358186729",
"80486497731443500074942597522153742394",
"243090170171819979248112159632359212407",
"93277124136739506380729474854853763226",
"178901220029825249659719213083626693279",
"194125483901183926760936823436771355285",
"171675359309686734777116786416072916902",
"217588444369519934202884819144749815061",
"4473328993679719218723335157548334191",
"171573710483631593626482820625033810296",
"293750799994773266239524882164513702911",
"231804677005578597847527824449701175481",
"50567455170983152814844652495694332538",
"111554726942601092747985049145269344436",
"97296717109793984239088904716676941625",
"214615434542165966331489754699225699272",
"102928361492850574065562843272408212559",
"338317679358054780816035217765587726456"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-31daf057",
"target": {
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"29523981632896910353329191004493210690",
"145945798863568759113111497885378156657",
"268314553979629973047803372797379083319",
"65852851248605415735671746027358186729",
"80486497731443500074942597522153742394",
"243090170171819979248112159632359212407",
"93277124136739506380729474854853763226",
"178901220029825249659719213083626693279",
"194125483901183926760936823436771355285",
"171675359309686734777116786416072916902",
"217588444369519934202884819144749815061",
"4473328993679719218723335157548334191",
"171573710483631593626482820625033810296",
"293750799994773266239524882164513702911",
"231804677005578597847527824449701175481",
"50567455170983152814844652495694332538",
"111554726942601092747985049145269344436",
"97296717109793984239088904716676941625",
"214615434542165966331489754699225699272",
"102928361492850574065562843272408212559",
"338317679358054780816035217765587726456"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-3d49d648",
"target": {
"function": "iommu_resume",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 826.0,
"function_hash": "101338020475614994663689482575383027022"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-4719df16",
"target": {
"file": "drivers/iommu/intel/iommu.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"249085469344522929595236814335339356623",
"292434841794978342158125740206398139489",
"119881745959264158763980110348086842641",
"273824173952866762901872023957793738440"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-5336194e",
"target": {
"function": "iommu_suspend",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 876.0,
"function_hash": "69880479390447306784518560848011647450"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-54680512",
"target": {
"file": "drivers/iommu/intel/iommu.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"249085469344522929595236814335339356623",
"292434841794978342158125740206398139489",
"119881745959264158763980110348086842641",
"273824173952866762901872023957793738440"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-704709f7",
"target": {
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"29523981632896910353329191004493210690",
"145945798863568759113111497885378156657",
"268314553979629973047803372797379083319",
"65852851248605415735671746027358186729",
"80486497731443500074942597522153742394",
"243090170171819979248112159632359212407",
"93277124136739506380729474854853763226",
"178901220029825249659719213083626693279",
"194125483901183926760936823436771355285",
"171675359309686734777116786416072916902",
"217588444369519934202884819144749815061",
"4473328993679719218723335157548334191",
"171573710483631593626482820625033810296",
"293750799994773266239524882164513702911",
"231804677005578597847527824449701175481",
"50567455170983152814844652495694332538",
"111554726942601092747985049145269344436",
"97296717109793984239088904716676941625",
"214615434542165966331489754699225699272",
"102928361492850574065562843272408212559",
"338317679358054780816035217765587726456"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-729e849a",
"target": {
"file": "include/linux/intel-iommu.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"249085469344522929595236814335339356623",
"292434841794978342158125740206398139489",
"119881745959264158763980110348086842641",
"273824173952866762901872023957793738440"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-7f43b5fb",
"target": {
"function": "iommu_suspend",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 876.0,
"function_hash": "69880479390447306784518560848011647450"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-877eadd1",
"target": {
"function": "iommu_suspend",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 876.0,
"function_hash": "69880479390447306784518560848011647450"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-a166eead",
"target": {
"function": "iommu_suspend",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 876.0,
"function_hash": "69880479390447306784518560848011647450"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-a888eeb2",
"target": {
"function": "iommu_resume",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 826.0,
"function_hash": "101338020475614994663689482575383027022"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-c5c8e2c9",
"target": {
"file": "drivers/iommu/intel/iommu.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"249085469344522929595236814335339356623",
"292434841794978342158125740206398139489",
"119881745959264158763980110348086842641",
"273824173952866762901872023957793738440"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@496c591f0b389eb782f36d9d4c2564b9a865eed0",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-d64d6db1",
"target": {
"function": "iommu_resume",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 826.0,
"function_hash": "101338020475614994663689482575383027022"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c12ef025add77ca3a0902e8719d552b6d47b4282",
"signature_type": "Function"
},
{
"id": "CVE-2023-52559-dcab30c7",
"target": {
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"29523981632896910353329191004493210690",
"145945798863568759113111497885378156657",
"268314553979629973047803372797379083319",
"65852851248605415735671746027358186729",
"80486497731443500074942597522153742394",
"243090170171819979248112159632359212407",
"93277124136739506380729474854853763226",
"178901220029825249659719213083626693279",
"194125483901183926760936823436771355285",
"171675359309686734777116786416072916902",
"217588444369519934202884819144749815061",
"4473328993679719218723335157548334191",
"171573710483631593626482820625033810296",
"293750799994773266239524882164513702911",
"231804677005578597847527824449701175481",
"50567455170983152814844652495694332538",
"111554726942601092747985049145269344436",
"97296717109793984239088904716676941625",
"214615434542165966331489754699225699272",
"102928361492850574065562843272408212559",
"338317679358054780816035217765587726456"
],
"threshold": 0.9
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59df44bfb0ca4c3ee1f1c3c5d0ee8e314844799e",
"signature_type": "Line"
},
{
"id": "CVE-2023-52559-e02f764f",
"target": {
"function": "iommu_resume",
"file": "drivers/iommu/intel/iommu.c"
},
"signature_version": "v1",
"digest": {
"length": 826.0,
"function_hash": "101338020475614994663689482575383027022"
},
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29298c85a81abdc512e87537515ed4b1a9601d0e",
"signature_type": "Function"
}
]