diff options
author | Dave Airlie <airlied@redhat.com> | 2022-07-01 01:27:28 +0200 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2022-07-01 01:27:55 +0200 |
commit | b8f0009bc9edf9186b20ae2a9e442ef0af93040e (patch) | |
tree | ee69b7603ae091238e62ff7e7666da3e2ecbb517 /drivers/video | |
parent | Merge tag 'amd-drm-fixes-5.19-2022-06-29' of https://gitlab.freedesktop.org/a... (diff) | |
parent | fbdev: Disable sysfb device registration when removing conflicting FBs (diff) | |
download | linux-b8f0009bc9edf9186b20ae2a9e442ef0af93040e.tar.xz linux-b8f0009bc9edf9186b20ae2a9e442ef0af93040e.zip |
Merge tag 'drm-misc-fixes-2022-06-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
A NULL pointer dereference fix for vc4, and 3 patches to improve the
sysfb device behaviour when removing conflicting framebuffers
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20220630072404.2fa4z3nk5h5q34ci@houat
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/fbdev/core/fbmem.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index afa2863670f3..8afc4538558c 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -19,6 +19,7 @@ #include <linux/kernel.h> #include <linux/major.h> #include <linux/slab.h> +#include <linux/sysfb.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/vt.h> @@ -1752,6 +1753,17 @@ int remove_conflicting_framebuffers(struct apertures_struct *a, do_free = true; } + /* + * If a driver asked to unregister a platform device registered by + * sysfb, then can be assumed that this is a driver for a display + * that is set up by the system firmware and has a generic driver. + * + * Drivers for devices that don't have a generic driver will never + * ask for this, so let's assume that a real driver for the display + * was already probed and prevent sysfb to register devices later. + */ + sysfb_disable(); + mutex_lock(®istration_lock); do_remove_conflicting_framebuffers(a, name, primary); mutex_unlock(®istration_lock); |