dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Louis Chauvet" <louis.chauvet@bootlin.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v5 14/38] drm/vkms: Use plane folder name as plane name
Date: Sat, 27 Jun 2026 03:43:41 +0000	[thread overview]
Message-ID: <20260627034342.02C151F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260627-vkms-all-config-v5-14-854aa0840926@bootlin.com>

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] User-provided plane name from configfs is used directly as a format string in `drmm_universal_plane_alloc()`.
- [Medium] Missing cleanup of `plane->config` on the `vkms_config_plane_set_name()` error path in `make_plane_group()`.
- [Medium] `drm_get_rotation_name` incorrectly uses a rotation mask as an array index, contrary to its documentation.
--

commit 71fdf3bbf310c477150a383e21a3c104a2d6795c
Author: Louis Chauvet <louis.chauvet@bootlin.com>
Subject: drm/vkms: Use plane folder name as plane name

The plane name is now directly derived from the configfs folder name. When a
plane directory is created under /config/vkms/<device>/planes/, the folder
name is used as the plane name via vkms_config_plane_set_name.

> diff --git a/drivers/gpu/drm/vkms/vkms_configfs.c b/drivers/gpu/drm/vkms/vkms_configfs.c
> index 97f87a53d202a..0744ac40814d8 100644
> --- a/drivers/gpu/drm/vkms/vkms_configfs.c
> +++ b/drivers/gpu/drm/vkms/vkms_configfs.c
> @@ -377,6 +377,12 @@ static struct config_group *make_plane_group(struct config_group *group,
>  			return ERR_PTR(ret);
>  		}
>  
> +		ret = vkms_config_plane_set_name(plane->config, name, strlen(name));

[Severity: High]
Could this introduce a format string regression?

Since this user-provided configfs folder name is stored as the plane name,
it appears it gets passed directly as the format string parameter to
drmm_universal_plane_alloc() later during initialization:

drivers/gpu/drm/vkms/vkms_plane.c:vkms_plane_init()
    plane = drmm_universal_plane_alloc(dev, struct vkms_plane, base, 0,
        &vkms_plane_funcs,
        vkms_config_plane_get_supported_formats(plane_cfg),
        vkms_config_plane_get_supported_formats_count(plane_cfg),
        NULL, vkms_config_plane_get_type(plane_cfg),
        vkms_config_plane_get_name(plane_cfg));

If a user creates a configfs directory with a name containing printf-style
format specifiers (e.g., "%s%n"), can it lead to a kernel crash or memory
corruption?

> +		if (ret) {
> +			kfree(plane);

[Severity: Medium]
Is there a regression in this error path where it leaves a dangling plane
configuration?

If vkms_config_plane_set_name() fails (e.g., due to memory allocation
failure), this calls kfree(plane). However, it seems plane->config was
already appended to dev->config->planes prior to this, but we don't call
vkms_config_destroy_plane(plane->config) here.

Can this leave a ghost plane in the device configuration that lacks a
corresponding configfs directory?

> +			return ERR_PTR(ret);
> +		}
> +
>  		config_group_init_type_name(&plane->group, name, &plane_item_type);
>  
>  		config_group_init_type_name(&plane->possible_crtcs_group,

[Severity: Medium]
Will the following logic in drm_get_rotation_name() cause a regression by
incorrectly using a rotation mask as an array index?

In drivers/gpu/drm/drm_blend.c:drm_get_rotation_name():

    const char *drm_get_rotation_name(unsigned int rotation)
    {
        if (rotation < ARRAY_SIZE(rotation_props))
            return rotation_props[rotation].name;

        return "(unknown)";
    }

The documentation for this function explicitly states the rotation parameter
expects a rotation mask (DRM_MODE_ROTATE_* | DRM_MODE_REFLECT_*). However,
the implementation expects an array index (0-5) and incorrectly uses the
mask as an index.

For example, passing the mask DRM_MODE_ROTATE_90 (which is 2) returns
"rotate-180" (the value at index 2).

Can this cause incorrect strings to be returned to new drivers or core code
using this exported function?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260627-vkms-all-config-v5-0-854aa0840926@bootlin.com?part=14

  reply	other threads:[~2026-06-27  3:43 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-27  3:30 [PATCH v5 00/38] VKMS: Introduce multiple configFS attributes Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 01/38] drm/drm_mode_config: Add helper to get plane type name Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 02/38] drm/blend: Get a rotation name from it's bitfield Louis Chauvet
2026-06-27  3:41   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 03/38] drm/drm_color_mgmt: Expose drm_get_color_encoding_name Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 04/38] drm/drm_color_mgmt: Expose drm_get_color_range_name Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 05/38] drm/connector: Export drm_get_colorspace_name Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 06/38] drm/drm_atomic_state_helper: Properly load default value for rotation Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 07/38] Documentation: ABI: vkms: Add current VKMS ABI documentation Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 08/38] drm/vkms: Add error handling in plane config creation Louis Chauvet
2026-06-27  3:41   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 09/38] drm/vkms: Simplify plane_release code Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 10/38] drm/vkms: Explicitly display plane type Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 11/38] drm/vkms: Use enabled/disabled instead of 1/0 for debug Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 12/38] drm/vkms: Explicitly display connector status Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 13/38] drm/vkms: Introduce config for plane name Louis Chauvet
2026-06-27  3:46   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 14/38] drm/vkms: Use plane folder name as " Louis Chauvet
2026-06-27  3:43   ` sashiko-bot [this message]
2026-06-27  3:30 ` [PATCH v5 15/38] drm/vkms: Introduce config for plane rotation Louis Chauvet
2026-06-27  3:42   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 16/38] drm/vkms: Use DRM_ROTATION_FMT macros for rotation display Louis Chauvet
2026-06-27  3:39   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 17/38] drm/vkms: Introduce configfs for plane rotation Louis Chauvet
2026-06-27  3:46   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 18/38] drm/vkms: Introduce config for plane color encoding Louis Chauvet
2026-06-27  3:43   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 19/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:49   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 20/38] drm/vkms: Introduce config for plane color range Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 21/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:45   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 22/38] drm/vkms: Introduce config for plane format Louis Chauvet
2026-06-27  3:46   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 23/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:45   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 24/38] drm/vkms: Properly render plane using their zpos Louis Chauvet
2026-06-27  3:44   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 25/38] drm/vkms: Introduce config for plane zpos property Louis Chauvet
2026-06-27  3:41   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 26/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:46   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 27/38] drm/vkms: Introduce config for connector type Louis Chauvet
2026-06-27  3:45   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 28/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:45   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 29/38] drm/vkms: Rename vkms_connector_init to vkms_connector_init_static Louis Chauvet
2026-06-27  3:30 ` [PATCH v5 30/38] drm/vkms: Introduce config for connector supported colorspace Louis Chauvet
2026-06-27  3:58   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 31/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:48   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 32/38] drm/vkms: Introduce config for connector EDID Louis Chauvet
2026-06-27  3:48   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 33/38] drm/vkms: Introduce configfs " Louis Chauvet
2026-06-27  3:50   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 34/38] drm/vkms: Store the enabled/disabled status for connector Louis Chauvet
2026-06-27  3:48   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 35/38] drm/vkms: Allow to hot-add connectors Louis Chauvet
2026-06-27  3:50   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 36/38] drm/vkms: Introduce configfs for dynamic connector creation Louis Chauvet
2026-06-27  3:55   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 37/38] drm/vkms: Add connector parent configuration in vkms_config Louis Chauvet
2026-06-27  3:57   ` sashiko-bot
2026-06-27  3:30 ` [PATCH v5 38/38] drm/vkms: Add ConfigFS interface for connector parent and port_id Louis Chauvet
2026-06-27  3:45   ` sashiko-bot

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=20260627034342.02C151F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=louis.chauvet@bootlin.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox