Linux Framebuffer Layer development
 help / color / mirror / Atom feed
From: Helge Deller <deller@gmx.de>
To: Xiang Mei <xmei5@asu.edu>,
	bernie@plugable.com, linux-fbdev@vger.kernel.org,
	dri-devel@lists.freedesktop.org
Cc: gregkh@linuxfoundation.org, co+ed9902f2e44184d9@bugs.sh
Subject: Re: [PATCH] fbdev: udlfb: don't rebuild the mode list while the framebuffer is in use
Date: Sat, 12 Sep 2026 23:49:21 +0200	[thread overview]
Message-ID: <0c19c7f7-c0d9-41c7-8ef8-1daf5581b378@gmx.de> (raw)
In-Reply-To: <20260912211512.2049147-1-xmei5@asu.edu>

On 9/12/26 23:15, Xiang Mei wrote:
> dlfb_setup_modes() frees info->modelist with fb_destroy_modelist() and
> rebuilds it, but fbcon holds raw pointers into that list in
> fb_display[i].mode and nothing un-publishes them the way
> do_unregister_framebuffer() and store_modes() do with
> fbcon_delete_modelist(). The function does refuse to install a new mode
> while the framebuffer has users (dlfb->fb_count != 0), but only after the
> list is already destroyed. Reached from the 0666 "edid" sysfs attribute,
> an unprivileged write to /sys/class/graphics/fb0/edid therefore fails with
> -EINVAL and still leaves every fb_display[i].mode dangling; the next
> console switch reads the freed fb_videomode in fb_videomode_to_var().
> 
> Test fb_count before touching the list. fbcon takes a reference through
> fbcon_open(), so that condition covers exactly the states in which
> fb_display[] points into the list, and the errno returned to userspace is
> unchanged.
> 
>    BUG: KASAN: slab-use-after-free in fb_videomode_to_var (drivers/video/fbdev/core/modedb.c:905)
>    Read of size 4 at addr ffff8880107b449c by task kworker/1:1/47
>    Workqueue: events console_callback
>    Call Trace:
>     fb_videomode_to_var (drivers/video/fbdev/core/modedb.c:905)
>     display_to_var (drivers/video/fbdev/core/fbcon.c:998)
>     fbcon_switch (drivers/video/fbdev/core/fbcon.c:2182)
>     redraw_screen (drivers/tty/vt/vt.c:994)
>     complete_change_console (drivers/tty/vt/vt_ioctl.c:1141)
>     console_callback (drivers/tty/vt/vt.c:3358)
>     process_one_work (kernel/workqueue.c:3396)
>     worker_thread (kernel/workqueue.c:3479 kernel/workqueue.c:3560)
>     kthread (kernel/kthread.c:436)
>     ret_from_fork (arch/x86/kernel/process.c:158)
>     ret_from_fork_asm (arch/x86/entry/entry_64.S:245)
>    ...
>    The buggy address is located 28 bytes inside of
>     freed 96-byte region [ffff8880107b4480, ffff8880107b44e0)
> 
> Cc: stable@vger.kernel.org
> Fixes: 7d9485e2c53c ("Staging: udlfb: Add functions to expose sysfs metrics and controls")
> Reported-by: co+ed9902f2e44184d9@bugs.sh
> Closes: https://lore.kernel.org/all/1jSCSNaDKmuUG7h40rTsSl1rMaSwdlJef4rp%40bugs.sh/
> Assisted-by: Claude:claude-opus-5
> Signed-off-by: Xiang Mei <xmei5@asu.edu>
> ---
>   drivers/video/fbdev/udlfb.c | 5 +++++
>   1 file changed, 5 insertions(+)

Looks good.
Applied.

Thanks!
Helge

      reply	other threads:[~2026-09-12 21:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-12 21:15 [PATCH] fbdev: udlfb: don't rebuild the mode list while the framebuffer is in use Xiang Mei
2026-09-12 21:49 ` Helge Deller [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0c19c7f7-c0d9-41c7-8ef8-1daf5581b378@gmx.de \
    --to=deller@gmx.de \
    --cc=bernie@plugable.com \
    --cc=co+ed9902f2e44184d9@bugs.sh \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=xmei5@asu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox