In the Linux kernel, the following vulnerability has been resolved:
fbdev: Fix invalid page access after closing deferred I/O devices
When a fbdev with deferred I/O is once opened and closed, the dirty pages still remain queued in the pageref list, and eventually later those may be processed in the delayed work. This may lead to a corruption of pages, hitting an Oops.
This patch makes sure to cancel the delayed work and clean up the pageref list at closing the device for addressing the bug. A part of the cleanup code is factored out as a new helper function that is called from the common fb_release().
[
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@87b9802ca824fcee7915e717e9a60471af62e8e9",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/video/fbdev/core/fbmem.c"
},
"id": "CVE-2023-52731-07581e87",
"digest": {
"threshold": 0.9,
"line_hashes": [
"220971575929664324054009690615243493305",
"9185951686281011176290410687136696656",
"264287493988932985642503385094733320569",
"139725680143808672036043953027139836404"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3efc61d95259956db25347e2a9562c3e54546e20",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/video/fbdev/core/fbmem.c"
},
"id": "CVE-2023-52731-0d6669a3",
"digest": {
"threshold": 0.9,
"line_hashes": [
"220971575929664324054009690615243493305",
"9185951686281011176290410687136696656",
"264287493988932985642503385094733320569",
"139725680143808672036043953027139836404"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@87b9802ca824fcee7915e717e9a60471af62e8e9",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/fb.h"
},
"id": "CVE-2023-52731-54a24210",
"digest": {
"threshold": 0.9,
"line_hashes": [
"208314558709312157804576410687663366253",
"65731643813632477129050788631568493125",
"317321520056188458598649025466962957916",
"324299675841097761849055470457763504039"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f1d91f0e9d5a240a809698d7d9c5a538e7dcc149",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "fb_deferred_io_cleanup",
"file": "drivers/video/fbdev/core/fb_defio.c"
},
"id": "CVE-2023-52731-641f43fa",
"digest": {
"length": 342.0,
"function_hash": "27856199660949061341878625827920241241"
},
"signature_type": "Function"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@87b9802ca824fcee7915e717e9a60471af62e8e9",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "fb_deferred_io_cleanup",
"file": "drivers/video/fbdev/core/fb_defio.c"
},
"id": "CVE-2023-52731-7325ca48",
"digest": {
"length": 342.0,
"function_hash": "27856199660949061341878625827920241241"
},
"signature_type": "Function"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f1d91f0e9d5a240a809698d7d9c5a538e7dcc149",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/fb.h"
},
"id": "CVE-2023-52731-80a22706",
"digest": {
"threshold": 0.9,
"line_hashes": [
"208314558709312157804576410687663366253",
"65731643813632477129050788631568493125",
"317321520056188458598649025466962957916",
"324299675841097761849055470457763504039"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3efc61d95259956db25347e2a9562c3e54546e20",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/video/fbdev/core/fb_defio.c"
},
"id": "CVE-2023-52731-8146f7fe",
"digest": {
"threshold": 0.9,
"line_hashes": [
"193683203519382274571350174604638068986",
"141683507981823005834249158989270412186",
"254576598503723529119119703479687762881",
"39589692959009294473752984823694310840",
"172511225514792921681443205535939681568",
"291958150988430345239879525922011389613",
"118536200104104402653056766297592848686",
"305121920666290730864292360559117239769"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3efc61d95259956db25347e2a9562c3e54546e20",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "include/linux/fb.h"
},
"id": "CVE-2023-52731-895d8e0e",
"digest": {
"threshold": 0.9,
"line_hashes": [
"208314558709312157804576410687663366253",
"65731643813632477129050788631568493125",
"317321520056188458598649025466962957916",
"324299675841097761849055470457763504039"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f1d91f0e9d5a240a809698d7d9c5a538e7dcc149",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/video/fbdev/core/fb_defio.c"
},
"id": "CVE-2023-52731-93fff174",
"digest": {
"threshold": 0.9,
"line_hashes": [
"193683203519382274571350174604638068986",
"141683507981823005834249158989270412186",
"254576598503723529119119703479687762881",
"39589692959009294473752984823694310840",
"172511225514792921681443205535939681568",
"291958150988430345239879525922011389613",
"118536200104104402653056766297592848686",
"305121920666290730864292360559117239769"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@87b9802ca824fcee7915e717e9a60471af62e8e9",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/video/fbdev/core/fb_defio.c"
},
"id": "CVE-2023-52731-a18f4c30",
"digest": {
"threshold": 0.9,
"line_hashes": [
"193683203519382274571350174604638068986",
"141683507981823005834249158989270412186",
"254576598503723529119119703479687762881",
"39589692959009294473752984823694310840",
"172511225514792921681443205535939681568",
"291958150988430345239879525922011389613",
"118536200104104402653056766297592848686",
"305121920666290730864292360559117239769"
]
},
"signature_type": "Line"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3efc61d95259956db25347e2a9562c3e54546e20",
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "fb_deferred_io_cleanup",
"file": "drivers/video/fbdev/core/fb_defio.c"
},
"id": "CVE-2023-52731-d138c589",
"digest": {
"length": 342.0,
"function_hash": "27856199660949061341878625827920241241"
},
"signature_type": "Function"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f1d91f0e9d5a240a809698d7d9c5a538e7dcc149",
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/video/fbdev/core/fbmem.c"
},
"id": "CVE-2023-52731-e76702c8",
"digest": {
"threshold": 0.9,
"line_hashes": [
"220971575929664324054009690615243493305",
"9185951686281011176290410687136696656",
"264287493988932985642503385094733320569",
"139725680143808672036043953027139836404"
]
},
"signature_type": "Line"
}
]