From: Thomas Zimmermann <tzimmermann@suse.de>
To: Javier Martinez Canillas <javierm@redhat.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
linux-kernel@vger.kernel.org
Cc: linux-fbdev@vger.kernel.org,
Daniel Vetter <daniel.vetter@ffwll.ch>,
Helge Deller <deller@gmx.de>,
dri-devel@lists.freedesktop.org,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH v3 1/4] fbdev: Prevent possible use-after-free in fb_release()
Date: Mon, 9 May 2022 20:12:28 +0200 [thread overview]
Message-ID: <b5ab1c49-04e7-36c3-677d-2989b79e50ca@suse.de> (raw)
In-Reply-To: <3b7fe4fe-fdec-cef2-4e0e-309d9dc4a8af@redhat.com>
[-- Attachment #1.1: Type: text/plain, Size: 2227 bytes --]
Hi Javier
Am 09.05.22 um 18:33 schrieb Javier Martinez Canillas:
> On 5/9/22 17:51, Andrzej Hajda wrote:
>
> [snip]
>
>>>>> +
>>>> Regarding drm:
>>>> What about drm_fb_helper_fini? It calls also framebuffer_release and is
>>>> called often from _remove paths (checked intel/radeon/nouveau). I guess
>>>> it should be fixed as well. Do you plan to fix it?
>>>>
>>> I think you are correct. Maybe we need something like the following?
>>>
>>> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
>>> index d265a73313c9..b09598f7af28 100644
>>> --- a/drivers/gpu/drm/drm_fb_helper.c
>>> +++ b/drivers/gpu/drm/drm_fb_helper.c
>>> @@ -631,7 +631,6 @@ void drm_fb_helper_fini(struct drm_fb_helper *fb_helper)
>>> if (info) {
>>> if (info->cmap.len)
>>> fb_dealloc_cmap(&info->cmap);
>>> - framebuffer_release(info);
>>
>> What about cmap? I am not an fb expert, but IMO cmap can be accessed
>> from userspace as well.
>>
>
> I actually thought about the same but then remembered what Daniel said in [0]
> (AFAIU at least) that these should be done in .remove() so the current code
> looks like matches that and only framebuffer_release() should be moved.
>
> For vesafb a previous patch proposed to also move a release_region() call to
> .fb_destroy() and Daniel also said that it was iffy and shouldn't be done [1].
>
> But I'm also not fb expert so happy to move fb_dealloc_cmap() as well if that
> is the correct thing to do.
The cmap data structure is software state that can be accessed via icotl
as long as the devfile is open. Drivers update the hardware from it. See
[1]. Moving that cleanup into fb_destroy seems appropriate to me.
Best regards
Thomas
[1]
https://elixir.bootlin.com/linux/v5.17.6/source/drivers/video/fbdev/core/fbcmap.c#L231
>
> [0]: https://www.spinics.net/lists/dri-devel/msg346257.html
> [1]: https://www.spinics.net/lists/dri-devel/msg346261.html
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
next prev parent reply other threads:[~2022-05-09 18:13 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-05 21:59 [PATCH v3 0/4] fbdev: Fix use-after-free caused by wrong fb_info cleanup in drivers Javier Martinez Canillas
2022-05-05 22:04 ` [PATCH v3 1/4] fbdev: Prevent possible use-after-free in fb_release() Javier Martinez Canillas
2022-05-09 14:56 ` Andrzej Hajda
2022-05-09 15:30 ` Javier Martinez Canillas
2022-05-09 15:51 ` Andrzej Hajda
2022-05-09 16:33 ` Javier Martinez Canillas
2022-05-09 18:12 ` Thomas Zimmermann [this message]
2022-05-09 20:03 ` Javier Martinez Canillas
2022-05-09 22:22 ` Andrzej Hajda
2022-05-09 22:42 ` Javier Martinez Canillas
2022-05-10 7:19 ` Andrzej Hajda
2022-05-10 7:50 ` Javier Martinez Canillas
2022-05-11 13:18 ` Daniel Vetter
2022-05-10 8:04 ` Thomas Zimmermann
2022-05-10 8:30 ` Javier Martinez Canillas
2022-05-10 8:37 ` Thomas Zimmermann
2022-05-10 8:50 ` Thomas Zimmermann
2022-05-10 9:06 ` Javier Martinez Canillas
2022-05-10 9:39 ` Thomas Zimmermann
2022-05-10 9:44 ` Javier Martinez Canillas
2022-05-09 18:32 ` Thomas Zimmermann
2022-05-09 20:00 ` Javier Martinez Canillas
2022-05-11 13:15 ` Daniel Vetter
2022-05-05 22:04 ` [PATCH v3 2/4] fbdev: simplefb: Cleanup fb_info in .fb_destroy rather than .remove Javier Martinez Canillas
2022-05-05 22:05 ` [PATCH v3 3/4] fbdev: efifb: " Javier Martinez Canillas
2022-05-06 13:07 ` Andrzej Hajda
2022-05-06 13:18 ` Javier Martinez Canillas
2022-05-05 22:06 ` [PATCH v3 4/4] fbdev: vesafb: " Javier Martinez Canillas
2022-05-06 7:34 ` [PATCH v3 0/4] fbdev: Fix use-after-free caused by wrong fb_info cleanup in drivers Javier Martinez Canillas
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=b5ab1c49-04e7-36c3-677d-2989b79e50ca@suse.de \
--to=tzimmermann@suse.de \
--cc=andrzej.hajda@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel.vetter@intel.com \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).