CVE-2026-89598
NoneCVSS
—
EPSS
0.2%
Published
Sep 11, 2026
CISA due date
—
Cloudanix analysis
A Linux driver for a common small OLED screen can freeze or crash a device when the screen is updated at an unsafe moment.
- Exploitation
- Other
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The Linux kernel ssd1307fb framebuffer driver issued synchronous, sleeping I2C transfers from fbdev damage callbacks that can run in atomic context (for example when fbcon/printk has disabled preemption). That path violates atomicity rules, producing scheduling-while-atomic conditions, lockdep/preempt-count warnings, and possible kernel hangs or panics—a local denial of service on hosts using this SSD1306/SSD1307 OLED driver.
Why it matters to the business
Embedded Linux devices and single-board computers that drive small OLED panels through ssd1307fb may freeze or crash during ordinary console activity, taking down kiosks, industrial HMIs, or IoT appliances. Confidentiality and integrity are not affected. Urgency is low: the issue is not in CISA KEV, is not tied to ransomware, has exploit maturity of none, EPSS is about 0.0017 with no 30-day change, and the advisory is 37 days old.
How an attack unfolds
There is no remote network vector and no named threat-actor or campaign activity. On a system with ssd1307fb bound to an SSD1307-class I2C OLED, framebuffer damage callbacks (fbcon cursor blit or console print) may run after printk has disabled preemption. The unpatched driver then performs a blocking I2C transfer from that atomic section, the scheduler is entered while atomic, and the kernel may warn, hang, or panic. The public report was triggered by a watchdog close that printed to the console under systemd, showing that normal privileged activity—not a crafted payload—can induce the crash. A local user could increase crash likelihood by forcing console or framebuffer updates; there is no evidence of in-the-wild exploitation.
How to fix it
Install a Linux kernel that includes the upstream ssd1307fb fix deferring I2C transfers out of damage callbacks so display updates no longer run in atomic context. This record lists no distro or package versions; take the patched kernel from your vendor or a stable/LTS tree that contains that deferral. If an immediate upgrade is not possible, unload or blacklist ssd1307fb, do not bind the OLED, or disable fbcon on that framebuffer. Reboot onto the patched kernel after upgrade.
How to confirm the fix worked
Confirm the running kernel changelog or ssd1307fb source defers I2C work from damage callbacks instead of calling i2c_transfer in atomic context. Check whether ssd1307fb is loaded and whether an SSD1307-compatible panel is bound. After patching, generate console and fbcon activity and verify kernel logs no longer show scheduling-while-atomic traces through ssd1307fb_update_rect or ssd1307fb_defio_imageblit.
Typical attack path
- Obtain local access to a Linux host that loads ssd1307fb against an SSD1306/SSD1307 OLED over I2C
- Cause framebuffer or virtual-console updates (fbcon cursor, printk/vt output) while the kernel is in atomic context
- Unpatched damage callback performs a sleeping I2C transfer from that context
- Kernel hits scheduling-while-atomic and may hang or panic, denying availability
How to detect it
Search kernel logs (dmesg, journalctl -k, kern.log/messages) for scheduling-while-atomic or preempt-count lockdep warnings whose call traces include ssd1307fb_update_rect, ssd1307fb_defio_imageblit, fbcon_cursor, vt_console_print, or I2C xfer helpers originating in ssd1307fb. Note the process (often a console writer), hardware description, and modules list containing ssd1307fb. Matching oopses mean the bug fired locally; they do not imply remote intrusion. No network indicators or malware artifacts are associated.
- BUG: scheduling while atomic
- ssd1307fb_update_rect
- ssd1307fb_defio_imageblit
- [ssd1307fb]
- DEBUG_LOCKS_WARN_ON(val > preempt_count())
- fbcon_cursor
- vt_console_print
- i2c_transfer_buffer_flags
- rk3x_i2c_xfer
What your security team should do
- Treat this as a local availability issue, not a KEV or ransomware emergency; patch embedded/SBC fleets that load ssd1307fb on a normal kernel cadence
- Inventory systems with ssd1307fb loaded or SSD1306/SSD1307 OLEDs on I2C
- Until patched, blacklist ssd1307fb or disable fbcon on the affected display where operationally acceptable
- Alert on kernel oopses whose traces mention ssd1307fb_update_rect or scheduling while atomic with ssd1307fb
- Do not open incident response solely on this CVE unless matching oopses appear
The record
In the Linux kernel, the following vulnerability has been resolved: fbdev: ssd1307fb: defer I2C transfers from damage callbacks The fbdev damage callbacks may run from fbcon while printk has disabled preemption. They currently update the display synchronously, which enters the sleeping I2C transfer path from atomic context. A complete report from an RK3566 system follows: [ 258.129004] watchdog: watchdog0: watchdog did not stop! [ 258.129067] BUG: scheduling while atomic: systemd/1/0x00000003 [ 258.129076] Modules linked in: algif_hash algif_skcipher af_alg bnep binfmt_misc lz4hc lz4 zram snd_soc_hdmi_codec brcmfmac_wcc hci_uart fb_ssd1306(C) fbtft(C) btqca btrtl btintel btsdio snd_soc_simple_card motorcomm pwm_fan snd_soc_simple_card_utils ssd130x_spi nls_iso8859_1 ssd130x btbcm drm_shmem_helper display_connector brcmfmac ssd1307fb brcmutil bluetooth cfg80211 rfkill snd_soc_rockchip_i2s_tdm snd_soc_rk817 hantro_vpu snd_soc_core snd_compress snd_pcm_dmaengine v4l2_vp9 snd_pcm v4l2_h264 rockchip_rga snd_timer rk_crypto2 spi_rockchip_sfc videobuf2_dma_contig snd sm3_generic v4l2_mem2mem videobuf2_dma_sg dwmac_rk sm3 soundcore videobuf2_memops videobuf2_v4l2 stmmac_platform dw_hdmi_cec videodev videobuf2_common dw_hdmi_i2s_audio stmmac rk817_charger pcs_xpcs mc cpufreq_dt sch_fq_codel ip_tables x_tables autofs4 [ 258.129215] Preemption disabled at: [ 258.129216] [<ffff80008012f96c>] vprintk_emit+0x11c/0x340 [ 258.129234] CPU: 0 PID: 1 Comm: systemd Tainted: G C 6.6.0-rc5-rockchip-rk356x #4 [ 258.129239] Hardware name: Rockchip RK3566 OPi 3B (DT) [ 258.129243] Call trace: [ 258.129245] dump_backtrace+0xa0/0x128 [ 258.129252] show_stack+0x20/0x38 [ 258.129256] dump_stack_lvl+0x60/0xb0 [ 258.129265] dump_stack+0x18/0x28 [ 258.129269] __schedule_bug+0xa0/0xc8 [ 258.129274] __schedule+0x9ac/0xd30 [ 258.129279] schedule+0x60/0x100 [ 258.129282] schedule_timeout+0x194/0x338 [ 258.129289] rk3x_i2c_xfer_common.isra.0+0x384/0x498 [ 258.129296] rk3x_i2c_xfer+0x20/0x60 [ 258.129300] __i2c_transfer+0x194/0x648 [ 258.129308] i2c_transfer+0x9c/0x130 [ 258.129313] i2c_transfer_buffer_flags+0x64/0x98 [ 258.129318] ssd1307fb_update_rect+0x42c/0x560 [ssd1307fb] [ 258.129334] ssd1307fb_defio_imageblit+0x34/0x50 [ssd1307fb] [ 258.129343] soft_cursor+0x13c/0x210 [ 258.129350] bit_cursor+0x2dc/0x550 [ 258.129354] fbcon_cursor+0xec/0x108 [ 258.129359] hide_cursor+0x44/0xc8 [ 258.129365] vt_console_print+0x398/0x3b0 [ 258.129370] console_flush_all.isra.0+0x17c/0x410 [ 258.129377] console_unlock+0x4c/0x100 [ 258.129382] vprintk_emit+0x1c8/0x340 [ 258.129386] vprintk_default+0x40/0x58 [ 258.129389] vprintk+0xb8/0xd0 [ 258.129392] _printk+0x68/0x98 [ 258.129398] watchdog_release+0x170/0x230 [ 258.129404] __fput+0xbc/0x288 [ 258.129409] __fput_sync+0x58/0x70 [ 258.129413] __arm64_sys_close+0x40/0x90 [ 258.129419] invoke_syscall+0x4c/0x118 [ 258.129426] el0_svc_common.constprop.0+0x48/0xf0 [ 258.129432] do_el0_svc+0x24/0x38 [ 258.129437] el0_svc+0x48/0x100 [ 258.129443] el0t_64_sync_handler+0xc0/0xc8 [ 258.129448] el0t_64_sync+0x190/0x198 [ 258.573087] ------------[ cut here ]------------ [ 258.573098] DEBUG_LOCKS_WARN_ON(val > preempt_count()) [ 258.573111] WARNING: CPU: 0 PID: 1 at kernel/sched/core.c:5871 preempt_count_sub+0x9c/0x148 [ 258.573130] Modules linked in: algif_hash algif_skcipher af_alg bnep binfmt_misc lz4hc lz4 zram snd_soc_hdmi_codec brcmfmac_wcc hci_uart fb_ssd1306(C) fbtft(C) btqca btrtl btintel btsdio snd_soc_simple_card motorcomm pwm_fan snd_soc_simple_card_utils ssd130x_spi nls_iso8859_1 ssd130x btbcm drm_shmem_helper display_connector brcmfmac ssd1307fb brcmutil bluetooth cfg80211 rfkill snd_soc_rockchip_i2s_tdm snd_soc_rk817 hantro_vpu snd_soc_core snd_compress snd_pcm_dmaengine v4l2_vp ---truncated---
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|