diff options
| author | Ian Bridges <icb@fastmail.org> | 2026-06-24 23:13:12 -0500 |
|---|---|---|
| committer | Helge Deller <deller@gmx.de> | 2026-06-26 15:12:45 +0200 |
| commit | 7f08fc10fa3d3366dc3af723970bd03d7d6d10e3 (patch) | |
| tree | d020ae878641a940bffb611fca0fbf6cc92353b5 /include/asm-i386/git@git.tavy.me:linux.git | |
| parent | 5fae9a928482d4845bca169a3a098789203a1ca4 (diff) | |
fbdev: Fix fb_new_modelist to prevent null-ptr-deref in fb_videomode_to_var
info->var, a framebuffer's current mode, is expected to have a matching
entry in info->modelist. var_to_display() relies on this and treats a
failed fb_match_mode() as "This should not happen". fb_set_var() keeps it
true by adding the mode to the list on every change, and
do_register_framebuffer() does the same at registration.
store_modes() replaces the modelist from userspace. fb_new_modelist()
validates the new modes but does not check that info->var still has a
match. It relies on fbcon_new_modelist() to re-point consoles, but that
only handles consoles mapped to the framebuffer. With fbcon unbound there
are none, so info->var is left describing a mode that is no longer in the
list.
A later console takeover runs var_to_display(), where fb_match_mode()
returns NULL and leaves fb_display[i].mode NULL. fbcon_switch() passes it
to display_to_var(), and fb_videomode_to_var() dereferences the NULL mode.
Keep the current mode in the list in fb_new_modelist(), the same way
fb_set_var() does.
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Ian Bridges <icb@fastmail.org>
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'include/asm-i386/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
