In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: svm range restore work deadlock when process exit
kfdprocessnotifierrelease flush svmrangerestorework which calls svmrangelistlockandflushwork to flush deferredlist work, but if deferredlist work mmput release the last user, it will call exitmmap -> notifierrelease, it is deadlock with below backtrace.
Move flush svmrangerestorework to kfdprocesswqrelease to avoid deadlock. Then svmrangerestore_work take task->mm ref to avoid mm is gone while validating and mapping ranges to GPU.
Workqueue: events svmrangedeferredlistwork [amdgpu] Call Trace: waitforcompletion+0x94/0x100 __flush_work+0x12a/0x1e0 __cancelworktimer+0x10e/0x190 canceldelayedworksync+0x13/0x20 kfdprocessnotifierrelease+0x98/0x2a0 [amdgpu] _mmunotifierrelease+0x74/0x1f0 exitmmap+0x170/0x200 mmput+0x5d/0x130 svmrangedeferredlistwork+0x104/0x230 [amdgpu] processonework+0x220/0x3c0
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49133.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-49133.json"
[
{
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"digest": {
"line_hashes": [
"169374803533321357618479805751142326660",
"210149197012640154494552097172960285114",
"327744432868843707529410024189128337162",
"269802993969589727264204666375564173732"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-1b0e652a",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "svm_range_list_fini",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"function_hash": "94699821951911236074184749098617266901",
"length": 522.0
},
"id": "CVE-2022-49133-1dc5d0e8",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "kfd_process_notifier_release",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"digest": {
"function_hash": "219251807797260328977532677832456821531",
"length": 970.0
},
"id": "CVE-2022-49133-2104bbff",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "svm_range_restore_work",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"function_hash": "32576176962164155033501990596960597023",
"length": 1492.0
},
"id": "CVE-2022-49133-22ac4c6d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"line_hashes": [
"102510266470385527565198172071858040462",
"12221795288987286260557644205831006644",
"318990947252706134751672577767079866353",
"72952573198146231478263753746627192820",
"216292102131361363950297851670649619659",
"205751087809622249389926222489670582860",
"278467695901328458097586238981371158849",
"189389239754991723971874349968275440761",
"119114320249662987319465117961583757471",
"18600931903769324101995941394468271949",
"252769479705582230778142624136065082390",
"53953445211985147521717129149646407798",
"104821821820354779570757233827569437488",
"34208352413307661877667432819934517953",
"100527852694386564803784742032180158682",
"88152186274467575256346758457319476419",
"288392057778523810845309811308355993550"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-2fc575b6",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "svm_range_restore_work",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"function_hash": "32576176962164155033501990596960597023",
"length": 1492.0
},
"id": "CVE-2022-49133-608e7494",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"line_hashes": [
"102510266470385527565198172071858040462",
"12221795288987286260557644205831006644",
"318990947252706134751672577767079866353",
"72952573198146231478263753746627192820",
"216292102131361363950297851670649619659",
"205751087809622249389926222489670582860",
"278467695901328458097586238981371158849",
"189389239754991723971874349968275440761",
"119114320249662987319465117961583757471",
"18600931903769324101995941394468271949",
"252769479705582230778142624136065082390",
"53953445211985147521717129149646407798",
"104821821820354779570757233827569437488",
"34208352413307661877667432819934517953",
"100527852694386564803784742032180158682",
"88152186274467575256346758457319476419",
"288392057778523810845309811308355993550"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-63be2c7f",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "kfd_process_notifier_release",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"digest": {
"function_hash": "219251807797260328977532677832456821531",
"length": 970.0
},
"id": "CVE-2022-49133-799ed3b9",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "kfd_process_notifier_release",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"digest": {
"function_hash": "219251807797260328977532677832456821531",
"length": 970.0
},
"id": "CVE-2022-49133-a79e025a",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "svm_range_list_fini",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"function_hash": "94699821951911236074184749098617266901",
"length": 522.0
},
"id": "CVE-2022-49133-aa2352da",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"line_hashes": [
"102510266470385527565198172071858040462",
"12221795288987286260557644205831006644",
"318990947252706134751672577767079866353",
"72952573198146231478263753746627192820",
"216292102131361363950297851670649619659",
"205751087809622249389926222489670582860",
"278467695901328458097586238981371158849",
"189389239754991723971874349968275440761",
"119114320249662987319465117961583757471",
"18600931903769324101995941394468271949",
"252769479705582230778142624136065082390",
"53953445211985147521717129149646407798",
"104821821820354779570757233827569437488",
"34208352413307661877667432819934517953",
"100527852694386564803784742032180158682",
"88152186274467575256346758457319476419",
"288392057778523810845309811308355993550"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-bf9c1487",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"digest": {
"line_hashes": [
"169374803533321357618479805751142326660",
"210149197012640154494552097172960285114",
"327744432868843707529410024189128337162",
"269802993969589727264204666375564173732"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-da0585a8",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "svm_range_list_fini",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"function_hash": "94699821951911236074184749098617266901",
"length": 522.0
},
"id": "CVE-2022-49133-e295dbe3",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"digest": {
"line_hashes": [
"169374803533321357618479805751142326660",
"210149197012640154494552097172960285114",
"327744432868843707529410024189128337162",
"269802993969589727264204666375564173732"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-e3a3b0c2",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"signature_version": "v1"
},
{
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "svm_range_restore_work",
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"digest": {
"function_hash": "32576176962164155033501990596960597023",
"length": 1492.0
},
"id": "CVE-2022-49133-ee9319e5",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"signature_version": "v1"
}
]