CVE-2026-98523
In the Linux kernel, the following vulnerability has been resolved:
drm/client: fix restore of partially initialized client
I got a null-ptr-deref report when closing a DRM file descriptor:
The warning is followed by a NULL pointer dereference:
drm_client_register() adds the DRM client to the device client list before invoking the initial hotplug callback. If the hotplug callback fails, the client remains registered.
For the fbdev client, a failure during drm_fb_helper_initial_config() causes the partially initialized fbdev helper to be cleaned up. drm_fb_helper_fini() releases fb_helper->info and leaves it NULL.
Read full descriptionShow less
The fbdev client therefore remains registered even though there is no fully initialized framebuffer device.
Later, when userspace closes the DRM file descriptor, drm_release() can invoke the restore callbacks of registered DRM clients:
drm_release() drm_client_dev_restore() drm_fbdev_client_restore() drm_fb_helper_restore_fbdev_mode_unlocked()
drm_fbdev_client_restore() currently restores the fbdev state unconditionally. For a partially initialized fbdev client this can submit an incomplete modeset state and subsequently access fbdev state which has not been initialized, resulting in the warning and NULL pointer dereference above.
drm_fbdev_client_unregister() already uses fb_helper->info to distinguish a fully probed framebuffer device from a partially initialized client.
Use the same condition in drm_fbdev_client_restore() and skip restore if no framebuffer device has been successfully initialized.
Technical details traces, logs and code from the original report
WARNING: drivers/gpu/drm/drm_atomic.c:2031 at __drm_atomic_helper_set_config+0x18e/0x1b0 [drm] Call Trace: drm_client_modeset_commit_atomic+0x16b/0x220 [drm] drm_client_modeset_commit_locked+0x56/0x160 [drm] drm_client_modeset_commit+0x21/0x40 [drm] __drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x7b/0x80 drm_fbdev_client_restore+0xe/0x20 [drm_client_lib] drm_client_dev_restore+0x9f/0xc0 [drm] drm_release+0xc5/0xe0 [drm] BUG: kernel NULL pointer dereference, address: 0000000000000008 RIP: __drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x41/0x80 [drm_kms_helper] Call Trace: drm_fbdev_client_restore+0xe/0x20 [drm_client_lib] drm_client_dev_restore+0x9f/0xc0 [drm] drm_release+0xc5/0xe0 [drm] __fput+0xdc/0x2b0 __x64_sys_close+0x39/0x80 do_syscall_64+0x8d/0x460 entry_SYSCALL_64_after_hwframe+0x76/0x7e
CVSS
NVD hasn't assigned a CVSS score to this CVE (common since the April 2026 policy change).
Exploitation probability (EPSS)
- Probability of exploitation in the next 30 days
- 0.21 %
- Percentile among all scored CVEs
- 10
- Score date
- 10/19/2026
EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).
Affected technologies (1)
⚠ AI-inferred from the description — NVD hasn't analyzed this CVE yet, these aren't verified CPEs.
References
Show 4 references
Raw JSON (NVD)
Show
{
"id": "CVE-2026-98523",
"cveTags": [],
"metrics": {},
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "7f5535fcbba2ce7f1908ee7e5c350032a4b1e9d0",
"lessThan": "11edd5b6735d2e1069ddce672b1836713647f7fb",
"versionType": "git"
},
{
"status": "affected",
"version": "5d08c44e47b9d41366714552bdd374ac4b595591",
"lessThan": "fcbedba553a9c430079ee225df2dc7ab556a2f83",
"versionType": "git"
},
{
"status": "affected",
"version": "5d08c44e47b9d41366714552bdd374ac4b595591",
"lessThan": "a69c4b678db808c0d89abb8cedeaaac38d1ef182",
"versionType": "git"
},
{
"status": "affected",
"version": "5d08c44e47b9d41366714552bdd374ac4b595591",
"lessThan": "1fca688e9443003e33cf30453e7a7560367656c9",
"versionType": "git"
},
{
"status": "affected",
"version": "6.12.19",
"lessThan": "6.12.112",
"versionType": "semver"
}
],
"programFiles": [
"drivers/gpu/drm/clients/drm_fbdev_client.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "6.13"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "6.13",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "6.12.112",
"versionType": "semver",
"lessThanOrEqual": "6.12.*"
},
{
"status": "unaffected",
"version": "6.18.55",
"versionType": "semver",
"lessThanOrEqual": "6.18.*"
},
{
"status": "unaffected",
"version": "7.2.9",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"drivers/gpu/drm/clients/drm_fbdev_client.c"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-18T16:17:03.700",
"references": [
{
"url": "https://git.kernel.org/stable/c/11edd5b6735d2e1069ddce672b1836713647f7fb",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/1fca688e9443003e33cf30453e7a7560367656c9",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/a69c4b678db808c0d89abb8cedeaaac38d1ef182",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/fcbedba553a9c430079ee225df2dc7ab556a2f83",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/client: fix restore of partially initialized client\n\nI got a null-ptr-deref report when closing a DRM file descriptor:\n\nWARNING: drivers/gpu/drm/drm_atomic.c:2031 at\n__drm_atomic_helper_set_config+0x18e/0x1b0 [drm]\n\nCall Trace:\ndrm_client_modeset_commit_atomic+0x16b/0x220 [drm]\ndrm_client_modeset_commit_locked+0x56/0x160 [drm]\ndrm_client_modeset_commit+0x21/0x40 [drm]\n__drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x7b/0x80\ndrm_fbdev_client_restore+0xe/0x20 [drm_client_lib]\ndrm_client_dev_restore+0x9f/0xc0 [drm]\ndrm_release+0xc5/0xe0 [drm]\n\nThe warning is followed by a NULL pointer dereference:\n\nBUG: kernel NULL pointer dereference, address: 0000000000000008\n\nRIP:\n__drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x41/0x80\n[drm_kms_helper]\n\nCall Trace:\ndrm_fbdev_client_restore+0xe/0x20 [drm_client_lib]\ndrm_client_dev_restore+0x9f/0xc0 [drm]\ndrm_release+0xc5/0xe0 [drm]\n__fput+0xdc/0x2b0\n__x64_sys_close+0x39/0x80\ndo_syscall_64+0x8d/0x460\nentry_SYSCALL_64_after_hwframe+0x76/0x7e\n\ndrm_client_register() adds the DRM client to the device client list\nbefore invoking the initial hotplug callback. If the hotplug callback\nfails, the client remains registered.\n\nFor the fbdev client, a failure during drm_fb_helper_initial_config()\ncauses the partially initialized fbdev helper to be cleaned up.\ndrm_fb_helper_fini() releases fb_helper->info and leaves it NULL.\n\nThe fbdev client therefore remains registered even though there is no\nfully initialized framebuffer device.\n\nLater, when userspace closes the DRM file descriptor, drm_release()\ncan invoke the restore callbacks of registered DRM clients:\n\ndrm_release()\ndrm_client_dev_restore()\ndrm_fbdev_client_restore()\ndrm_fb_helper_restore_fbdev_mode_unlocked()\n\ndrm_fbdev_client_restore() currently restores the fbdev state\nunconditionally. For a partially initialized fbdev client this can\nsubmit an incomplete modeset state and subsequently access fbdev\nstate which has not been initialized, resulting in the warning and\nNULL pointer dereference above.\n\ndrm_fbdev_client_unregister() already uses fb_helper->info to\ndistinguish a fully probed framebuffer device from a partially\ninitialized client.\n\nUse the same condition in drm_fbdev_client_restore() and skip restore\nif no framebuffer device has been successfully initialized."
}
],
"lastModified": "2026-10-19T10:19:07.417",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}