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": {
"length": 287.0,
"function_hash": "97197786451142694960729429357217702189"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive"
},
"deprecated": false,
"id": "CVE-2024-56540-00d42686",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38",
"signature_type": "Function"
},
{
"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
},
"target": {
"file": "drivers/accel/ivpu/ivpu_jsm_msg.c"
},
"deprecated": false,
"id": "CVE-2024-56540-01036d4e",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082",
"signature_type": "Line"
},
{
"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
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c"
},
"deprecated": false,
"id": "CVE-2024-56540-22c95338",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239",
"signature_type": "Line"
},
{
"digest": {
"length": 698.0,
"function_hash": "39617329996196321014615423361124261808"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive_internal"
},
"deprecated": false,
"id": "CVE-2024-56540-2bbf172e",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082",
"signature_type": "Function"
},
{
"digest": {
"length": 578.0,
"function_hash": "71031228638683047418717013370939589783"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive_active"
},
"deprecated": false,
"id": "CVE-2024-56540-33a0347a",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082",
"signature_type": "Function"
},
{
"digest": {
"length": 578.0,
"function_hash": "71031228638683047418717013370939589783"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive_active"
},
"deprecated": false,
"id": "CVE-2024-56540-618529f2",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38",
"signature_type": "Function"
},
{
"digest": {
"length": 578.0,
"function_hash": "71031228638683047418717013370939589783"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive_active"
},
"deprecated": false,
"id": "CVE-2024-56540-685e2f80",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239",
"signature_type": "Function"
},
{
"digest": {
"length": 287.0,
"function_hash": "97197786451142694960729429357217702189"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive"
},
"deprecated": false,
"id": "CVE-2024-56540-69989955",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082",
"signature_type": "Function"
},
{
"digest": {
"line_hashes": [
"62843954797304857355787245326490235546",
"272001292153558373192818528307022017142",
"314790105035072050734616401279167623026",
"218621956332904732734548622814287307556",
"218720853139099130644172032162439392477",
"175661378806696726041520913131244278791"
],
"threshold": 0.9
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.h"
},
"deprecated": false,
"id": "CVE-2024-56540-69fda224",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082",
"signature_type": "Line"
},
{
"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
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c"
},
"deprecated": false,
"id": "CVE-2024-56540-712998ef",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5eaa497411197c41b0813d61ba3fbd6267049082",
"signature_type": "Line"
},
{
"digest": {
"line_hashes": [
"62843954797304857355787245326490235546",
"272001292153558373192818528307022017142",
"314790105035072050734616401279167623026",
"218621956332904732734548622814287307556",
"218720853139099130644172032162439392477",
"175661378806696726041520913131244278791"
],
"threshold": 0.9
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.h"
},
"deprecated": false,
"id": "CVE-2024-56540-72978215",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239",
"signature_type": "Line"
},
{
"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
},
"target": {
"file": "drivers/accel/ivpu/ivpu_jsm_msg.c"
},
"deprecated": false,
"id": "CVE-2024-56540-7adcb83a",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239",
"signature_type": "Line"
},
{
"digest": {
"length": 698.0,
"function_hash": "39617329996196321014615423361124261808"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive_internal"
},
"deprecated": false,
"id": "CVE-2024-56540-85a80746",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38",
"signature_type": "Function"
},
{
"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
},
"target": {
"file": "drivers/accel/ivpu/ivpu_jsm_msg.c"
},
"deprecated": false,
"id": "CVE-2024-56540-8c4c6047",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38",
"signature_type": "Line"
},
{
"digest": {
"length": 698.0,
"function_hash": "39617329996196321014615423361124261808"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive_internal"
},
"deprecated": false,
"id": "CVE-2024-56540-8e9c290a",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239",
"signature_type": "Function"
},
{
"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
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c"
},
"deprecated": false,
"id": "CVE-2024-56540-b5e7d7ab",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38",
"signature_type": "Line"
},
{
"digest": {
"length": 287.0,
"function_hash": "97197786451142694960729429357217702189"
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.c",
"function": "ivpu_ipc_send_receive"
},
"deprecated": false,
"id": "CVE-2024-56540-d6af495c",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@362ef76020ea6219a4df4ac5b738672b59527239",
"signature_type": "Function"
},
{
"digest": {
"line_hashes": [
"62843954797304857355787245326490235546",
"272001292153558373192818528307022017142",
"314790105035072050734616401279167623026",
"218621956332904732734548622814287307556",
"218720853139099130644172032162439392477",
"175661378806696726041520913131244278791"
],
"threshold": 0.9
},
"target": {
"file": "drivers/accel/ivpu/ivpu_ipc.h"
},
"deprecated": false,
"id": "CVE-2024-56540-fd8a6028",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cac822772c4dc27a285f09caf30072ab76d2bf38",
"signature_type": "Line"
}
]