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 _flushwork+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] processone_work+0x220/0x3c0
[
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"digest": {
"line_hashes": [
"169374803533321357618479805751142326660",
"210149197012640154494552097172960285114",
"327744432868843707529410024189128337162",
"269802993969589727264204666375564173732"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-1b0e652a"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c",
"function": "svm_range_list_fini"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"digest": {
"length": 522.0,
"function_hash": "94699821951911236074184749098617266901"
},
"id": "CVE-2022-49133-1dc5d0e8"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c",
"function": "kfd_process_notifier_release"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"digest": {
"length": 970.0,
"function_hash": "219251807797260328977532677832456821531"
},
"id": "CVE-2022-49133-2104bbff"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c",
"function": "svm_range_restore_work"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"digest": {
"length": 1492.0,
"function_hash": "32576176962164155033501990596960597023"
},
"id": "CVE-2022-49133-22ac4c6d"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"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"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c",
"function": "svm_range_restore_work"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"digest": {
"length": 1492.0,
"function_hash": "32576176962164155033501990596960597023"
},
"id": "CVE-2022-49133-608e7494"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"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"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c",
"function": "kfd_process_notifier_release"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"digest": {
"length": 970.0,
"function_hash": "219251807797260328977532677832456821531"
},
"id": "CVE-2022-49133-799ed3b9"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c",
"function": "kfd_process_notifier_release"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"digest": {
"length": 970.0,
"function_hash": "219251807797260328977532677832456821531"
},
"id": "CVE-2022-49133-a79e025a"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c",
"function": "svm_range_list_fini"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6225bb3a88d22594aacea2485dc28ca12d596721",
"digest": {
"length": 522.0,
"function_hash": "94699821951911236074184749098617266901"
},
"id": "CVE-2022-49133-aa2352da"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"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"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"digest": {
"line_hashes": [
"169374803533321357618479805751142326660",
"210149197012640154494552097172960285114",
"327744432868843707529410024189128337162",
"269802993969589727264204666375564173732"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-da0585a8"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c",
"function": "svm_range_list_fini"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@858822905f4bf44100d63c5e22e263109976f7cb",
"digest": {
"length": 522.0,
"function_hash": "94699821951911236074184749098617266901"
},
"id": "CVE-2022-49133-e295dbe3"
},
{
"signature_type": "Line",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_process.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"digest": {
"line_hashes": [
"169374803533321357618479805751142326660",
"210149197012640154494552097172960285114",
"327744432868843707529410024189128337162",
"269802993969589727264204666375564173732"
],
"threshold": 0.9
},
"id": "CVE-2022-49133-e3a3b0c2"
},
{
"signature_type": "Function",
"deprecated": false,
"target": {
"file": "drivers/gpu/drm/amd/amdkfd/kfd_svm.c",
"function": "svm_range_restore_work"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a6be83086e91891081e0589e4b4645bf4643e897",
"digest": {
"length": 1492.0,
"function_hash": "32576176962164155033501990596960597023"
},
"id": "CVE-2022-49133-ee9319e5"
}
]