From: sashiko-bot@kernel.org
To: oushixiong1025@163.com
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v2] drm/gma500: Create the primary plane in the driver
Date: Thu, 03 Sep 2026 07:30:33 +0000 [thread overview]
Message-ID: <20260903073033.C6DF41F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260903071149.423579-1-oushixiong1025@163.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Freeing `gma_crtc` on `drm_crtc_init_with_planes()` failure causes a Use-After-Free because the CRTC remains linked in `dev->mode_config.crtc_list`.
--
commit 2d329a448a74770c14b7d09aef862579fa99672e
Author: Shixiong Ou <oushixiong@kylinos.cn>
drm/gma500: Create the primary plane in the driver
drm_crtc_init() creates the primary plane from a fixed format list
that includes ARGB8888. The display engine programs the primary plane
with DISPPLANE_32BPP_NO_ALPHA, so it does not support per-pixel alpha
and must not advertise alpha formats. This commit replaces drm_crtc_init()
with a driver-owned primary plane that advertises only XRGB8888.
> diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
> index 0df75a4a77396..f79484b9d593e 100644
> --- a/drivers/gpu/drm/gma500/psb_intel_display.c
> +++ b/drivers/gpu/drm/gma500/psb_intel_display.c
[ ... ]
> @@ -494,7 +511,17 @@ void psb_intel_crtc_init(struct drm_device *dev, int pipe,
> return;
> }
>
> - drm_crtc_init(dev, &gma_crtc->base, &gma_crtc_funcs);
> + primary = drmm_universal_plane_alloc(dev, struct drm_plane, dev, 0,
> + &gma_primary_plane_funcs,
> + gma_primary_formats,
> + ARRAY_SIZE(gma_primary_formats),
> + NULL, DRM_PLANE_TYPE_PRIMARY, NULL);
> + if (IS_ERR(primary))
> + goto err_free_crtc;
> +
> + if (drm_crtc_init_with_planes(dev, &gma_crtc->base, primary, NULL,
> + &gma_crtc_funcs, NULL))
> + goto err_free_crtc;
[Severity: High]
Could this error handling path leave a freed pointer linked in the DRM core?
Looking at __drm_crtc_init_with_planes(), the CRTC is added to the list early
in the function:
list_add_tail(&crtc->head, &config->crtc_list);
crtc->index = config->num_crtc++;
If a subsequent initialization step fails (such as drm_crtc_crc_init()),
__drm_crtc_init_with_planes() returns an error without removing the CRTC from
the list.
When jumping to err_free_crtc here, gma_crtc is freed via kfree() below. Might
this create a use-after-free condition when dev->mode_config.crtc_list is later
traversed?
[ ... ]
> @@ -524,6 +551,11 @@ void psb_intel_crtc_init(struct drm_device *dev, int pipe,
>
> /* Set to true so that the pipe is forced off on initial config. */
> gma_crtc->active = true;
> + return;
> +
> +err_free_crtc:
> + kfree(gma_crtc->crtc_state);
> + kfree(gma_crtc);
> }
>
> struct drm_crtc *psb_intel_get_crtc_from_pipe(struct drm_device *dev, int pipe)
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260903071149.423579-1-oushixiong1025@163.com?part=1
next prev parent reply other threads:[~2026-09-03 7:30 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 7:11 [PATCH v2] drm/gma500: Create the primary plane in the driver oushixiong1025
2026-09-03 7:30 ` sashiko-bot [this message]
2026-09-09 11:11 ` Patrik Jakobsson
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=20260903073033.C6DF41F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=oushixiong1025@163.com \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.