In the Linux kernel, the following vulnerability has been resolved:
video: fbdev: i740fb: Check the argument of i740calcvclk()
Since the user can control the arguments of the ioctl() from the user space, under special arguments that may result in a divide-by-zero bug.
If the user provides an improper 'pixclock' value that makes the argumet of i740calcvclk() less than 'I740RFREQFIX', it will cause a divide-by-zero bug in: drivers/video/fbdev/i740fb.c:353 pbest = min(15, ilog2(I740MAXVCOFREQ / (freq / I740RFREQFIX)));
The following log can reveal it:
divide error: 0000 [#1] PREEMPT SMP KASAN PTI RIP: 0010:i740calcvclk drivers/video/fbdev/i740fb.c:353 [inline] RIP: 0010:i740fbdecodevar drivers/video/fbdev/i740fb.c:646 [inline] RIP: 0010:i740fbsetpar+0x163f/0x3b70 drivers/video/fbdev/i740fb.c:742 Call Trace: fbsetvar+0x604/0xeb0 drivers/video/fbdev/core/fbmem.c:1034 dofbioctl+0x234/0x670 drivers/video/fbdev/core/fbmem.c:1110 fb_ioctl+0xdd/0x130 drivers/video/fbdev/core/fbmem.c:1189
Fix this by checking the argument of i740calcvclk() first.
[
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e740e787f06671455b59d1e498c9945f7b4e7b3b",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-020d592a",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7846.0,
"function_hash": "197369471561649982889026867681597759506"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@656689cb03ada4650016c153346939a1c334b1ae",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-2af49880",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59cefb583c984c0da8cf21a4c57d26d5a20dff5c",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-2ba59587",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2b7f559152a33c55f51b569b22efbe5e24886798",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-38e5cb5c",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@656689cb03ada4650016c153346939a1c334b1ae",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-3d06ee77",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7832.0,
"function_hash": "121752431030974773943644159216313538941"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4b20c61365140d432dee7da7aa294215e7b900d9",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-3f365727",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@40bf722f8064f50200b8c4f8946cd625b441dda9",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-4aaabf55",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2b7f559152a33c55f51b569b22efbe5e24886798",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-600a0544",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7832.0,
"function_hash": "121752431030974773943644159216313538941"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e740e787f06671455b59d1e498c9945f7b4e7b3b",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-68f7dd55",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4b20c61365140d432dee7da7aa294215e7b900d9",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-7963ca51",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7846.0,
"function_hash": "197369471561649982889026867681597759506"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f350812e2d15278f1d867eeb997407782234fb3c",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-8bdc7e80",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@40bf722f8064f50200b8c4f8946cd625b441dda9",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-9091c764",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7846.0,
"function_hash": "197369471561649982889026867681597759506"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d2d375eb68b4b8de6ea7460483a26fa9de56b443",
"target": {
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-94e6fc8d",
"signature_version": "v1",
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"254707745421641010094434645983748852709",
"107607280073935387683249143594805688307",
"242759632368546926857818593443936727644",
"162005134386884245034367501167910107430",
"122908375980915034780941624408004746384",
"90990920566055078660235272873589391811",
"320887331632091686079856214175775512330",
"261103355031577674624686817315049490277"
]
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f350812e2d15278f1d867eeb997407782234fb3c",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-bbc34451",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7846.0,
"function_hash": "197369471561649982889026867681597759506"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d2d375eb68b4b8de6ea7460483a26fa9de56b443",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-d40d778e",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7832.0,
"function_hash": "121752431030974773943644159216313538941"
}
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@59cefb583c984c0da8cf21a4c57d26d5a20dff5c",
"target": {
"function": "i740fb_decode_var",
"file": "drivers/video/fbdev/i740fb.c"
},
"deprecated": false,
"id": "CVE-2022-50010-fd814a52",
"signature_version": "v1",
"signature_type": "Function",
"digest": {
"length": 7832.0,
"function_hash": "121752431030974773943644159216313538941"
}
}
]