In the Linux kernel, the following vulnerability has been resolved:
accel/ivpu: Prevent recovery invocation during probe and resume
Refactor IPC send and receive functions to allow correct handling of operations that should not trigger a recovery process.
Expose ivpusendreceive_internal(), which is now utilized by the D0i3 entry, DCT initialization, and HWS initialization functions. These functions have been modified to return error codes gracefully, rather than initiating recovery.
The updated functions are invoked within ivpuprobe() and ivpuresume(), ensuring that any errors encountered during these stages result in a proper teardown or shutdown sequence. The previous approach of triggering recovery within these functions could lead to a race condition, potentially causing undefined behavior and kernel crashes due to null pointer dereferences.
[ { "digest": { "function_hash": "97197786451142694960729429357217702189", "length": 287.0 }, "id": "CVE-2024-56540-00d42686", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "line_hashes": [ "198028128997096214012476085634520584604", "300259328440539635493885047665445377014", "168961803409831692947906364768173608807", "242022397306480348685603152529545587067", "223106083586963700597540845903066177604", "100613911597822206434068161735247303400", "197589755692461201010968791904358451691", "5103671056675857911512179073328841633", "49941959052346518217358100750757612745", "261306501196826983746082208594646661204", "47830291229134187026453672375956699126", "197393074514433844592012046890811178610", "97837520963890207973927397192715864725", "56761724535991129299122267823917348976", "150840844403319430238387939971496396594", "102062145951292021840780515581335436441", "97328689917162447833468603244541201442", "285203637393686397608935649742255040946", "163265433474775350844294783318583606661", "303708973544533096037433662573651531264", "36997035696703386521746806050112741629", "300233434098292739125686639349876289563", "266809037151403579636622035046812433098" ], "threshold": 0.9 }, "id": "CVE-2024-56540-01036d4e", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082", "target": { "file": "drivers/accel/ivpu/ivpu_jsm_msg.c" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "line_hashes": [ "317975006593317885328437075212615393436", "93193263261059582938260861309024642173", "238380810650035891435614794752494980180", "158060183681815122748669956363549290337", "27272346169224025994181642256878133367", "115989871219631812321046505772370705346", "76315200441319684198753046953292414840", "310450382923083794732709854590241136093", "235484824896965710175355667280448449578", "257716091974528504562450118658353407746", "324852186940453774353929320160268403142", "257153299197436456758872207398375251751", "196055660540990282103047852402848049432", "122652139863942323955063357396069536450", "260673703131276549519957510174221963979", "183997741357028816374008804255322973147", "308322667271728412929468299952751295125", "165549650467220666884243344092636135864", "337002656551718286270038722975510274359", "126975641728125162113982972143975905553", "522645162619305022831501378900587373", "94097835162027784591994555826262492284", "36976341741210484765593710346576596025", "112959508245980225251717003040848642557", "262104425176176084759012120951384182481", "281127139423005844673291216641901878381", "10483022753513229048770739360369912806", "165700211801768761792523005512476450052", "141969369464748608920097565454003698697", "274426552007298821285842243480482142249", "240166853088025311157049861179247943913", "255597933988589077739991690382104674087", "139421894287422180329276317419539239327", "74681751765756359365838715038158644514", "234227355013441036108078515995744064021", "333220289136838910960576278214756381889", "21154126597879434027543129934340761220", "82933139560981775518890589440840296446", "19116822220528348043215103015461860446" ], "threshold": 0.9 }, "id": "CVE-2024-56540-22c95338", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "function_hash": "39617329996196321014615423361124261808", "length": 698.0 }, "id": "CVE-2024-56540-2bbf172e", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive_internal" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "function_hash": "71031228638683047418717013370939589783", "length": 578.0 }, "id": "CVE-2024-56540-33a0347a", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive_active" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "function_hash": "71031228638683047418717013370939589783", "length": 578.0 }, "id": "CVE-2024-56540-618529f2", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive_active" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "function_hash": "71031228638683047418717013370939589783", "length": 578.0 }, "id": "CVE-2024-56540-685e2f80", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive_active" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "function_hash": "97197786451142694960729429357217702189", "length": 287.0 }, "id": "CVE-2024-56540-69989955", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "line_hashes": [ "62843954797304857355787245326490235546", "272001292153558373192818528307022017142", "314790105035072050734616401279167623026", "218621956332904732734548622814287307556", "218720853139099130644172032162439392477", "175661378806696726041520913131244278791" ], "threshold": 0.9 }, "id": "CVE-2024-56540-69fda224", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.h" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "line_hashes": [ "317975006593317885328437075212615393436", "93193263261059582938260861309024642173", "238380810650035891435614794752494980180", "158060183681815122748669956363549290337", "27272346169224025994181642256878133367", "115989871219631812321046505772370705346", "76315200441319684198753046953292414840", "310450382923083794732709854590241136093", "235484824896965710175355667280448449578", "257716091974528504562450118658353407746", "324852186940453774353929320160268403142", "257153299197436456758872207398375251751", "196055660540990282103047852402848049432", "122652139863942323955063357396069536450", "260673703131276549519957510174221963979", "183997741357028816374008804255322973147", "308322667271728412929468299952751295125", "165549650467220666884243344092636135864", "337002656551718286270038722975510274359", "126975641728125162113982972143975905553", "522645162619305022831501378900587373", "94097835162027784591994555826262492284", "36976341741210484765593710346576596025", "112959508245980225251717003040848642557", "262104425176176084759012120951384182481", "281127139423005844673291216641901878381", "10483022753513229048770739360369912806", "165700211801768761792523005512476450052", "141969369464748608920097565454003698697", "274426552007298821285842243480482142249", "240166853088025311157049861179247943913", "255597933988589077739991690382104674087", "139421894287422180329276317419539239327", "74681751765756359365838715038158644514", "234227355013441036108078515995744064021", "333220289136838910960576278214756381889", "21154126597879434027543129934340761220", "82933139560981775518890589440840296446", "19116822220528348043215103015461860446" ], "threshold": 0.9 }, "id": "CVE-2024-56540-712998ef", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "line_hashes": [ "62843954797304857355787245326490235546", "272001292153558373192818528307022017142", "314790105035072050734616401279167623026", "218621956332904732734548622814287307556", "218720853139099130644172032162439392477", "175661378806696726041520913131244278791" ], "threshold": 0.9 }, "id": "CVE-2024-56540-72978215", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.h" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "line_hashes": [ "198028128997096214012476085634520584604", "300259328440539635493885047665445377014", "168961803409831692947906364768173608807", "242022397306480348685603152529545587067", "223106083586963700597540845903066177604", "100613911597822206434068161735247303400", "197589755692461201010968791904358451691", "5103671056675857911512179073328841633", "49941959052346518217358100750757612745", "261306501196826983746082208594646661204", "47830291229134187026453672375956699126", "197393074514433844592012046890811178610", "97837520963890207973927397192715864725", "56761724535991129299122267823917348976", "150840844403319430238387939971496396594", "102062145951292021840780515581335436441", "97328689917162447833468603244541201442", "285203637393686397608935649742255040946", "163265433474775350844294783318583606661", "303708973544533096037433662573651531264", "36997035696703386521746806050112741629" ], "threshold": 0.9 }, "id": "CVE-2024-56540-7adcb83a", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239", "target": { "file": "drivers/accel/ivpu/ivpu_jsm_msg.c" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "function_hash": "39617329996196321014615423361124261808", "length": 698.0 }, "id": "CVE-2024-56540-85a80746", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive_internal" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "line_hashes": [ "198028128997096214012476085634520584604", "300259328440539635493885047665445377014", "168961803409831692947906364768173608807", "242022397306480348685603152529545587067", "223106083586963700597540845903066177604", "100613911597822206434068161735247303400", "197589755692461201010968791904358451691", "5103671056675857911512179073328841633", "49941959052346518217358100750757612745", "261306501196826983746082208594646661204", "47830291229134187026453672375956699126", "197393074514433844592012046890811178610", "97837520963890207973927397192715864725", "56761724535991129299122267823917348976", "150840844403319430238387939971496396594", "102062145951292021840780515581335436441", "97328689917162447833468603244541201442", "285203637393686397608935649742255040946", "163265433474775350844294783318583606661", "303708973544533096037433662573651531264", "36997035696703386521746806050112741629" ], "threshold": 0.9 }, "id": "CVE-2024-56540-8c4c6047", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38", "target": { "file": "drivers/accel/ivpu/ivpu_jsm_msg.c" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "function_hash": "39617329996196321014615423361124261808", "length": 698.0 }, "id": "CVE-2024-56540-8e9c290a", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive_internal" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "line_hashes": [ "317975006593317885328437075212615393436", "93193263261059582938260861309024642173", "238380810650035891435614794752494980180", "158060183681815122748669956363549290337", "27272346169224025994181642256878133367", "115989871219631812321046505772370705346", "76315200441319684198753046953292414840", "310450382923083794732709854590241136093", "235484824896965710175355667280448449578", "257716091974528504562450118658353407746", "324852186940453774353929320160268403142", "257153299197436456758872207398375251751", "196055660540990282103047852402848049432", "122652139863942323955063357396069536450", "260673703131276549519957510174221963979", "183997741357028816374008804255322973147", "308322667271728412929468299952751295125", "165549650467220666884243344092636135864", "337002656551718286270038722975510274359", "126975641728125162113982972143975905553", "522645162619305022831501378900587373", "94097835162027784591994555826262492284", "36976341741210484765593710346576596025", "112959508245980225251717003040848642557", "262104425176176084759012120951384182481", "281127139423005844673291216641901878381", "10483022753513229048770739360369912806", "165700211801768761792523005512476450052", "141969369464748608920097565454003698697", "274426552007298821285842243480482142249", "240166853088025311157049861179247943913", "255597933988589077739991690382104674087", "139421894287422180329276317419539239327", "74681751765756359365838715038158644514", "234227355013441036108078515995744064021", "333220289136838910960576278214756381889", "21154126597879434027543129934340761220", "82933139560981775518890589440840296446", "19116822220528348043215103015461860446" ], "threshold": 0.9 }, "id": "CVE-2024-56540-b5e7d7ab", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false }, { "digest": { "function_hash": "97197786451142694960729429357217702189", "length": 287.0 }, "id": "CVE-2024-56540-d6af495c", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.c", "function": "ivpu_ipc_send_receive" }, "signature_version": "v1", "signature_type": "Function", "deprecated": false }, { "digest": { "line_hashes": [ "62843954797304857355787245326490235546", "272001292153558373192818528307022017142", "314790105035072050734616401279167623026", "218621956332904732734548622814287307556", "218720853139099130644172032162439392477", "175661378806696726041520913131244278791" ], "threshold": 0.9 }, "id": "CVE-2024-56540-fd8a6028", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38", "target": { "file": "drivers/accel/ivpu/ivpu_ipc.h" }, "signature_version": "v1", "signature_type": "Line", "deprecated": false } ]