In the Linux kernel, the following vulnerability has been resolved:
HID: i2c-hid: remove I2CHIDREAD_PENDING flag to prevent lock-up
The flag I2CHIDREAD_PENDING is used to serialize I2C operations. However, this is not necessary, because I2C core already has its own locking for that.
More importantly, this flag can cause a lock-up: if the flag is set in i2chidxfer() and an interrupt happens, the interrupt handler (i2chidirq) will check this flag and return immediately without doing anything, then the interrupt handler will be invoked again in an infinite loop.
Since interrupt handler is an RT task, it takes over the CPU and the flag-clearing task never gets scheduled, thus we have a lock-up.
Delete this unnecessary flag.
[
{
"id": "CVE-2024-35997-0e6f4e8e",
"signature_version": "v1",
"digest": {
"function_hash": "49814924142591610854973037062624664825",
"length": 869.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29e94f295bad5be59cf4271a93e22cdcf5536722",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_xfer"
}
},
{
"id": "CVE-2024-35997-10871c51",
"signature_version": "v1",
"digest": {
"function_hash": "49814924142591610854973037062624664825",
"length": 869.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@418c5575d56410c6e186ab727bf32ae32447d497",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_xfer"
}
},
{
"id": "CVE-2024-35997-148fde32",
"signature_version": "v1",
"digest": {
"function_hash": "265156509950097838395970912585522940305",
"length": 1791.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5095b93021b899f54c9355bebf36d78854c33a22",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "__i2c_hid_command"
}
},
{
"id": "CVE-2024-35997-1b874caa",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"9135083765021257450627073814748916163",
"299288814248681484988463860876219702228",
"294194758002937085627091295045023027294",
"56892808966588774173640617301058014996",
"330935208878309619783119914345112588625",
"47507160687594958707122795859542594613",
"218098637931997787635204147225305524182",
"317903655651066334354451510261541445784",
"204191020771302057720832362448869942872",
"203719567352928436469955562579868784650",
"292852062902675895385343532980921800575",
"259835874411164927322746870317123073266",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5095b93021b899f54c9355bebf36d78854c33a22",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-1d8ec730",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c448a9fd50f77e8fb9156ff64848aa4295eb3003",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-26d61294",
"signature_version": "v1",
"digest": {
"function_hash": "265156509950097838395970912585522940305",
"length": 1791.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c448a9fd50f77e8fb9156ff64848aa4295eb3003",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "__i2c_hid_command"
}
},
{
"id": "CVE-2024-35997-3978c211",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b65fb50e04a95eec34a9d1bc138454a98a5578d8",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-44387e35",
"signature_version": "v1",
"digest": {
"function_hash": "49814924142591610854973037062624664825",
"length": 869.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0561b65fbd53d3e788c5b0222d9112ca016fd6a1",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_xfer"
}
},
{
"id": "CVE-2024-35997-4d1cd7b2",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"306281859128069764352501203659260678578",
"113952656470036848643610120453987751856",
"203399479315269848830196242377933081786",
"80613512304302526416442562082261335828",
"173457875967358870558153874713349713037",
"124893902395636756777339075398877415141",
"53167952861377827243669259046452880818",
"117175709610073703609998604980273812145",
"1867403756055393514913080100673780147",
"316024448322835578452696957702478503354",
"289466139659486434462135585076437780949",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@418c5575d56410c6e186ab727bf32ae32447d497",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-54112aca",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@21bfca822cfc1e71796124e93b46e0d9fa584401",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-641a95ff",
"signature_version": "v1",
"digest": {
"function_hash": "265156509950097838395970912585522940305",
"length": 1791.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b65fb50e04a95eec34a9d1bc138454a98a5578d8",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "__i2c_hid_command"
}
},
{
"id": "CVE-2024-35997-6cc26a5a",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@418c5575d56410c6e186ab727bf32ae32447d497",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-6e776c7f",
"signature_version": "v1",
"digest": {
"function_hash": "265156509950097838395970912585522940305",
"length": 1791.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@21bfca822cfc1e71796124e93b46e0d9fa584401",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "__i2c_hid_command"
}
},
{
"id": "CVE-2024-35997-785fcbcf",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"306281859128069764352501203659260678578",
"113952656470036848643610120453987751856",
"203399479315269848830196242377933081786",
"80613512304302526416442562082261335828",
"173457875967358870558153874713349713037",
"124893902395636756777339075398877415141",
"53167952861377827243669259046452880818",
"117175709610073703609998604980273812145",
"1867403756055393514913080100673780147",
"316024448322835578452696957702478503354",
"289466139659486434462135585076437780949",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9c0f59e47a90c54d0153f8ddc0f80d7a36207d0e",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-83be3e80",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"104829319166491336064428834602335437608",
"299288814248681484988463860876219702228",
"294194758002937085627091295045023027294",
"80613512304302526416442562082261335828",
"173457875967358870558153874713349713037",
"124893902395636756777339075398877415141",
"53167952861377827243669259046452880818",
"117175709610073703609998604980273812145",
"1867403756055393514913080100673780147",
"316024448322835578452696957702478503354",
"289466139659486434462135585076437780949",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0561b65fbd53d3e788c5b0222d9112ca016fd6a1",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-ab55dc75",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5095b93021b899f54c9355bebf36d78854c33a22",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-bbeb5de8",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9c0f59e47a90c54d0153f8ddc0f80d7a36207d0e",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-ceca0db0",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29e94f295bad5be59cf4271a93e22cdcf5536722",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
},
{
"id": "CVE-2024-35997-d0589f12",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"306281859128069764352501203659260678578",
"113952656470036848643610120453987751856",
"203399479315269848830196242377933081786",
"80613512304302526416442562082261335828",
"173457875967358870558153874713349713037",
"124893902395636756777339075398877415141",
"53167952861377827243669259046452880818",
"117175709610073703609998604980273812145",
"1867403756055393514913080100673780147",
"316024448322835578452696957702478503354",
"289466139659486434462135585076437780949",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29e94f295bad5be59cf4271a93e22cdcf5536722",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-d9a01e5f",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"9135083765021257450627073814748916163",
"299288814248681484988463860876219702228",
"294194758002937085627091295045023027294",
"56892808966588774173640617301058014996",
"330935208878309619783119914345112588625",
"47507160687594958707122795859542594613",
"218098637931997787635204147225305524182",
"317903655651066334354451510261541445784",
"204191020771302057720832362448869942872",
"203719567352928436469955562579868784650",
"292852062902675895385343532980921800575",
"259835874411164927322746870317123073266",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@21bfca822cfc1e71796124e93b46e0d9fa584401",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-e34aa3d9",
"signature_version": "v1",
"digest": {
"function_hash": "49814924142591610854973037062624664825",
"length": 869.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9c0f59e47a90c54d0153f8ddc0f80d7a36207d0e",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_xfer"
}
},
{
"id": "CVE-2024-35997-e378c7c7",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"9135083765021257450627073814748916163",
"299288814248681484988463860876219702228",
"294194758002937085627091295045023027294",
"56892808966588774173640617301058014996",
"330935208878309619783119914345112588625",
"47507160687594958707122795859542594613",
"218098637931997787635204147225305524182",
"317903655651066334354451510261541445784",
"204191020771302057720832362448869942872",
"203719567352928436469955562579868784650",
"292852062902675895385343532980921800575",
"259835874411164927322746870317123073266",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c448a9fd50f77e8fb9156ff64848aa4295eb3003",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-e74615c6",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"244810109256431415286390974604674897570",
"299288814248681484988463860876219702228",
"294194758002937085627091295045023027294",
"56892808966588774173640617301058014996",
"330935208878309619783119914345112588625",
"47507160687594958707122795859542594613",
"218098637931997787635204147225305524182",
"317903655651066334354451510261541445784",
"204191020771302057720832362448869942872",
"203719567352928436469955562579868784650",
"292852062902675895385343532980921800575",
"259835874411164927322746870317123073266",
"71097218074472591132595023958453483834",
"295721361332161245969674050804885226322",
"262057380335262483919861122521246642369",
"95455125241767909672354964416204951555",
"42026551042281615215057172757206542423"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b65fb50e04a95eec34a9d1bc138454a98a5578d8",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c"
}
},
{
"id": "CVE-2024-35997-fcf094da",
"signature_version": "v1",
"digest": {
"function_hash": "126407062159411085229306862364115944646",
"length": 198.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0561b65fbd53d3e788c5b0222d9112ca016fd6a1",
"target": {
"file": "drivers/hid/i2c-hid/i2c-hid-core.c",
"function": "i2c_hid_irq"
}
}
]