In the Linux kernel, the following vulnerability has been resolved:
drm/vmwgfx: Fix the lifetime of the bo cursor memory
The cleanup can be dispatched while the atomic update is still active, which means that the memory acquired in the atomic update needs to not be invalidated by the cleanup. The buffer objects in vmwplanestate instead of using the builtin mapandcache were trying to handle the lifetime of the mapped memory themselves, leading to crashes.
Use the mapandcache instead of trying to manage the lifetime of the buffer objects held by the vmwplanestate.
Fixes kernel oops'es in IGT's kmscursorlegacy forked-bo.
[
{
"id": "CVE-2024-35810-1497b602",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@86cb706a40b7e6b2221ee49a298a65ad9b46c02d",
"signature_version": "v1",
"digest": {
"length": 302.0,
"function_hash": "188462800572742250401926076156778148341"
},
"target": {
"function": "vmw_du_cursor_plane_acquire_image",
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2024-35810-5424c768",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76",
"signature_version": "v1",
"digest": {
"line_hashes": [
"105246835205072455086032443495845769933",
"324443653563342364646209533591367356391",
"243825154070160168016521899494216285141",
"27803554149794057394688803378910970137",
"156092629427465719969581777719581422140",
"116639971706766191994762705450375912520",
"202929798097335871050766765015955188106",
"298556914435323752195244513879503748300",
"61583434545308794796639222594422376595",
"46953187225846334044564649307540388688",
"23113933055417121034098551228275895306",
"81837527091395943262133404653389261425",
"184425133519996438741389746846297929134",
"330800046974924853137814545362210879353",
"82338947488047439625151148721694842650",
"167164488584117904308021583518269539204",
"65196554490752158818706931487207406057",
"314534738342467730673312992012863494460",
"92737637762463984851834253877699251614",
"285916369598799625058906002496186232936",
"243168270917316131488973660834163762520",
"237839003587747176050478052087113563490",
"204642167937421041274808138407145431742",
"144913591759353466547362779046823229638",
"154186353206309268507055202725959873560"
],
"threshold": 0.9
},
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Line",
"deprecated": false
},
{
"id": "CVE-2024-35810-5e030dc4",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@86cb706a40b7e6b2221ee49a298a65ad9b46c02d",
"signature_version": "v1",
"digest": {
"length": 695.0,
"function_hash": "123908312453321429327635018065724440560"
},
"target": {
"function": "vmw_du_cursor_plane_cleanup_fb",
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2024-35810-8df0ceb2",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@104a5b2772bc7c0715ae7355ccf9d294a472765c",
"signature_version": "v1",
"digest": {
"length": 695.0,
"function_hash": "123908312453321429327635018065724440560"
},
"target": {
"function": "vmw_du_cursor_plane_cleanup_fb",
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2024-35810-bb13da14",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76",
"signature_version": "v1",
"digest": {
"length": 695.0,
"function_hash": "123908312453321429327635018065724440560"
},
"target": {
"function": "vmw_du_cursor_plane_cleanup_fb",
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2024-35810-c7762a93",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@104a5b2772bc7c0715ae7355ccf9d294a472765c",
"signature_version": "v1",
"digest": {
"length": 302.0,
"function_hash": "188462800572742250401926076156778148341"
},
"target": {
"function": "vmw_du_cursor_plane_acquire_image",
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2024-35810-d8178d8e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76",
"signature_version": "v1",
"digest": {
"length": 302.0,
"function_hash": "188462800572742250401926076156778148341"
},
"target": {
"function": "vmw_du_cursor_plane_acquire_image",
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2024-35810-fc349fc5",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@104a5b2772bc7c0715ae7355ccf9d294a472765c",
"signature_version": "v1",
"digest": {
"line_hashes": [
"105246835205072455086032443495845769933",
"324443653563342364646209533591367356391",
"243825154070160168016521899494216285141",
"27803554149794057394688803378910970137",
"156092629427465719969581777719581422140",
"116639971706766191994762705450375912520",
"202929798097335871050766765015955188106",
"298556914435323752195244513879503748300",
"61583434545308794796639222594422376595",
"46953187225846334044564649307540388688",
"23113933055417121034098551228275895306",
"81837527091395943262133404653389261425",
"184425133519996438741389746846297929134",
"330800046974924853137814545362210879353",
"82338947488047439625151148721694842650",
"167164488584117904308021583518269539204",
"65196554490752158818706931487207406057",
"314534738342467730673312992012863494460",
"92737637762463984851834253877699251614",
"285916369598799625058906002496186232936",
"243168270917316131488973660834163762520",
"237839003587747176050478052087113563490",
"204642167937421041274808138407145431742",
"144913591759353466547362779046823229638",
"154186353206309268507055202725959873560"
],
"threshold": 0.9
},
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Line",
"deprecated": false
},
{
"id": "CVE-2024-35810-fffa1951",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@86cb706a40b7e6b2221ee49a298a65ad9b46c02d",
"signature_version": "v1",
"digest": {
"line_hashes": [
"105246835205072455086032443495845769933",
"324443653563342364646209533591367356391",
"243825154070160168016521899494216285141",
"27803554149794057394688803378910970137",
"156092629427465719969581777719581422140",
"116639971706766191994762705450375912520",
"202929798097335871050766765015955188106",
"298556914435323752195244513879503748300",
"61583434545308794796639222594422376595",
"46953187225846334044564649307540388688",
"23113933055417121034098551228275895306",
"81837527091395943262133404653389261425",
"184425133519996438741389746846297929134",
"330800046974924853137814545362210879353",
"82338947488047439625151148721694842650",
"167164488584117904308021583518269539204",
"65196554490752158818706931487207406057",
"314534738342467730673312992012863494460",
"92737637762463984851834253877699251614",
"285916369598799625058906002496186232936",
"243168270917316131488973660834163762520",
"237839003587747176050478052087113563490",
"204642167937421041274808138407145431742",
"144913591759353466547362779046823229638",
"154186353206309268507055202725959873560"
],
"threshold": 0.9
},
"target": {
"file": "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
},
"signature_type": "Line",
"deprecated": false
}
]