diff options
author | Dave Airlie <airlied@redhat.com> | 2023-01-27 12:31:02 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2023-01-27 12:31:09 +1000 |
commit | d23db89883962d9b4cb3ad03dfd02e525ed2cc03 (patch) | |
tree | 522755ecf4283e74e87295c39aa59e351bc766ac /drivers/gpu/drm/drm_fbdev_generic.c | |
parent | f439a959dcfb6b39d6fd4b85ca1110a1d1de1587 (diff) | |
parent | d6591da5f3ff284a376d56b5f7a48a34e9cb159d (diff) | |
download | linux-d23db89883962d9b4cb3ad03dfd02e525ed2cc03.tar.bz2 |
Merge tag 'drm-misc-fixes-2023-01-26' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
A fix and a preliminary patch to fix a memory leak in i915, and a use
after free fix for fbdev deferred io
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20230126104018.cbrcjxl5wefdbb2f@houat
Diffstat (limited to 'drivers/gpu/drm/drm_fbdev_generic.c')
-rw-r--r-- | drivers/gpu/drm/drm_fbdev_generic.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/drm_fbdev_generic.c b/drivers/gpu/drm/drm_fbdev_generic.c index ab8695669279..593aa3283792 100644 --- a/drivers/gpu/drm/drm_fbdev_generic.c +++ b/drivers/gpu/drm/drm_fbdev_generic.c @@ -171,11 +171,6 @@ static const struct fb_ops drm_fbdev_fb_ops = { .fb_imageblit = drm_fbdev_fb_imageblit, }; -static struct fb_deferred_io drm_fbdev_defio = { - .delay = HZ / 20, - .deferred_io = drm_fb_helper_deferred_io, -}; - /* * This function uses the client API to create a framebuffer backed by a dumb buffer. */ @@ -222,8 +217,14 @@ static int drm_fbdev_fb_probe(struct drm_fb_helper *fb_helper, return -ENOMEM; fbi->flags |= FBINFO_VIRTFB | FBINFO_READS_FAST; - fbi->fbdefio = &drm_fbdev_defio; - fb_deferred_io_init(fbi); + /* Set a default deferred I/O handler */ + fb_helper->fbdefio.delay = HZ / 20; + fb_helper->fbdefio.deferred_io = drm_fb_helper_deferred_io; + + fbi->fbdefio = &fb_helper->fbdefio; + ret = fb_deferred_io_init(fbi); + if (ret) + return ret; } else { /* buffer is mapped for HW framebuffer */ ret = drm_client_buffer_vmap(fb_helper->buffer, &map); |