In the Linux kernel, the following vulnerability has been resolved:
drm/vmwgfx: Prevent unmapping active read buffers
The kms paths keep a persistent map active to read and compare the cursor buffer. These maps can race with each other in simple scenario where: a) buffer "a" mapped for update b) buffer "a" mapped for compare c) do the compare d) unmap "a" for compare e) update the cursor f) unmap "a" for update At step "e" the buffer has been unmapped and the read contents is bogus.
Prevent unmapping of active read buffers by simply keeping a count of how many paths have currently active maps and unmap only when the count reaches 0.
[
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 135.0,
"function_hash": "69388497224851353675338781459271036615"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@aba07b9a0587f50e5d3346eaa19019cf3f86c0ea",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_unmap"
},
"id": "CVE-2024-46710-01312156"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 441.0,
"function_hash": "100599907121176654900666453854271050021"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@aba07b9a0587f50e5d3346eaa19019cf3f86c0ea",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_map_and_cache_size"
},
"id": "CVE-2024-46710-0f4b1676"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 938.0,
"function_hash": "336164078857770144062184924288757006175"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5228d158e4c0b1663b3983044913c15c3d0135e",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_init"
},
"id": "CVE-2024-46710-2260811a"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"digest": {
"line_hashes": [
"243251785461686692886536562006194674013",
"30887265825432129638805758264099260387",
"225683605249269573160052090760425280558",
"282846655047840516331823527645317326936",
"39302318264769077636374043955522028566",
"274144019191385544036023664452990431251",
"48258138051347723650676641592591117354",
"95887430753707775582108782988173936048",
"311482366858735193176706173382943219123",
"286564609000591479216895259143359065089",
"315653671614746477355060691982991664733",
"225353198404484314226646617351143642114",
"331399523496169778557323601987298321341",
"132443036242022883066814371516247786453",
"234595202194185923206059068500901526456"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0851b1ec650adadcaa23ec96daad95a55bf966f0",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c"
},
"id": "CVE-2024-46710-4a7c7063"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"digest": {
"line_hashes": [
"243251785461686692886536562006194674013",
"30887265825432129638805758264099260387",
"225683605249269573160052090760425280558",
"282846655047840516331823527645317326936",
"39302318264769077636374043955522028566",
"274144019191385544036023664452990431251",
"48258138051347723650676641592591117354",
"95887430753707775582108782988173936048",
"311482366858735193176706173382943219123",
"286564609000591479216895259143359065089",
"315653671614746477355060691982991664733",
"202687502076712139427260431584182324773",
"106097103044821794235917840067160589037",
"259483553206777316877821641491574978049",
"92965231024331324975056402682532242995"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5228d158e4c0b1663b3983044913c15c3d0135e",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c"
},
"id": "CVE-2024-46710-62e55be8"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 893.0,
"function_hash": "283331127316009963408485219294848761071"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0851b1ec650adadcaa23ec96daad95a55bf966f0",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_init"
},
"id": "CVE-2024-46710-72d59957"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 938.0,
"function_hash": "336164078857770144062184924288757006175"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@aba07b9a0587f50e5d3346eaa19019cf3f86c0ea",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_init"
},
"id": "CVE-2024-46710-7a35a23d"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"digest": {
"line_hashes": [
"243251785461686692886536562006194674013",
"30887265825432129638805758264099260387",
"225683605249269573160052090760425280558",
"282846655047840516331823527645317326936",
"39302318264769077636374043955522028566",
"274144019191385544036023664452990431251",
"48258138051347723650676641592591117354",
"95887430753707775582108782988173936048",
"311482366858735193176706173382943219123",
"286564609000591479216895259143359065089",
"315653671614746477355060691982991664733",
"202687502076712139427260431584182324773",
"106097103044821794235917840067160589037",
"259483553206777316877821641491574978049",
"92965231024331324975056402682532242995"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@aba07b9a0587f50e5d3346eaa19019cf3f86c0ea",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c"
},
"id": "CVE-2024-46710-7a586996"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 135.0,
"function_hash": "69388497224851353675338781459271036615"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0851b1ec650adadcaa23ec96daad95a55bf966f0",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_unmap"
},
"id": "CVE-2024-46710-7d640822"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"digest": {
"line_hashes": [
"250726935088525921285307948262699257794",
"205443635394292925452017601569221529979",
"171493048320499205926190204679467128259",
"77389709827922392889188850459915308534",
"221306409324678046749444617893381977521",
"251211005571952952663710519927540172687"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5228d158e4c0b1663b3983044913c15c3d0135e",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.h"
},
"id": "CVE-2024-46710-894a13f7"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"digest": {
"line_hashes": [
"250726935088525921285307948262699257794",
"205443635394292925452017601569221529979",
"171493048320499205926190204679467128259",
"245577502758184604448100486488798775465",
"53179790404837315023502345469794198424",
"329625608102520409416321595080996242448"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0851b1ec650adadcaa23ec96daad95a55bf966f0",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.h"
},
"id": "CVE-2024-46710-895c63c9"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 441.0,
"function_hash": "100599907121176654900666453854271050021"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5228d158e4c0b1663b3983044913c15c3d0135e",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_map_and_cache_size"
},
"id": "CVE-2024-46710-94f03c5a"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"digest": {
"line_hashes": [
"250726935088525921285307948262699257794",
"205443635394292925452017601569221529979",
"171493048320499205926190204679467128259",
"77389709827922392889188850459915308534",
"221306409324678046749444617893381977521",
"251211005571952952663710519927540172687"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@aba07b9a0587f50e5d3346eaa19019cf3f86c0ea",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.h"
},
"id": "CVE-2024-46710-acbb9c9e"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 135.0,
"function_hash": "69388497224851353675338781459271036615"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d5228d158e4c0b1663b3983044913c15c3d0135e",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_unmap"
},
"id": "CVE-2024-46710-b1c52850"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"digest": {
"length": 382.0,
"function_hash": "231575064398210248361700809244801533373"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0851b1ec650adadcaa23ec96daad95a55bf966f0",
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_bo.c",
"function": "vmw_bo_map_and_cache"
},
"id": "CVE-2024-46710-c22b9525"
}
]