lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <20220208210824.2238981-16-daniel.vetter@ffwll.ch> Date: Tue, 8 Feb 2022 22:08:20 +0100 From: Daniel Vetter <daniel.vetter@...ll.ch> To: DRI Development <dri-devel@...ts.freedesktop.org> Cc: Intel Graphics Development <intel-gfx@...ts.freedesktop.org>, linux-fbdev@...r.kernel.org, LKML <linux-kernel@...r.kernel.org>, Daniel Vetter <daniel.vetter@...ll.ch>, Sam Ravnborg <sam@...nborg.org>, Daniel Vetter <daniel.vetter@...el.com>, Daniel Vetter <daniel@...ll.ch>, Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Du Cheng <ducheng2@...il.com>, Claudio Suarez <cssk@...-c.es> Subject: [PATCH v2 15/19] fbcon: Move more code into fbcon_release con2fb_release_oldinfo() has a bunch more kfree() calls than fbcon_exit(), but since kfree() on NULL is harmless doing that in both places should be ok. This is also a bit more symmetric now again with fbcon_open also allocating the fbcon_ops structure. Acked-by: Sam Ravnborg <sam@...nborg.org> Signed-off-by: Daniel Vetter <daniel.vetter@...el.com> Cc: Daniel Vetter <daniel@...ll.ch> Cc: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org> Cc: Du Cheng <ducheng2@...il.com> Cc: Claudio Suarez <cssk@...-c.es> --- drivers/video/fbdev/core/fbcon.c | 33 +++++++++++++------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index abb419a091c6..685b4a9e5546 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -690,6 +690,18 @@ static void fbcon_release(struct fb_info *info) unlock_fb_info(info); module_put(info->fbops->owner); + + if (info->fbcon_par) { + struct fbcon_ops *ops = info->fbcon_par; + + fbcon_del_cursor_work(info); + kfree(ops->cursor_state.mask); + kfree(ops->cursor_data); + kfree(ops->cursor_src); + kfree(ops->fontbuffer); + kfree(info->fbcon_par); + info->fbcon_par = NULL; + } } static int fbcon_open(struct fb_info *info) @@ -740,18 +752,10 @@ static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info, static void con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo, struct fb_info *newinfo) { - struct fbcon_ops *ops = oldinfo->fbcon_par; int ret; fbcon_release(oldinfo); - fbcon_del_cursor_work(oldinfo); - kfree(ops->cursor_state.mask); - kfree(ops->cursor_data); - kfree(ops->cursor_src); - kfree(ops->fontbuffer); - kfree(oldinfo->fbcon_par); - oldinfo->fbcon_par = NULL; /* If oldinfo and newinfo are driving the same hardware, the fb_release() method of oldinfo may attempt to @@ -3315,19 +3319,8 @@ static void fbcon_exit(void) } } - if (mapped) { - if (info->fbcon_par) { - struct fbcon_ops *ops = info->fbcon_par; - - fbcon_del_cursor_work(info); - kfree(ops->cursor_src); - kfree(ops->cursor_state.mask); - kfree(info->fbcon_par); - info->fbcon_par = NULL; - } - + if (mapped) fbcon_release(info); - } } } -- 2.34.1
Powered by blists - more mailing lists