From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Daniel Stone <daniels@collabora.com>
Subject: [PATCH 1/5] drm/uapi: Validate DRM_IOCTL_MODE_CREATE_DUMB flags
Date: Tue, 21 Oct 2025 22:44:51 +0300 [thread overview]
Message-ID: <20251021194455.24297-2-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20251021194455.24297-1-ville.syrjala@linux.intel.com>
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Currently we allow any garbage in drm_mode_create_dumb::flags.
Reject the ioctl if flags has anything in it since we currently
have no defined flags.
The uapi documentation already says that the flags must be
zero.
I checked that at least these current users all zero the struct
fully before issuing the ioctl:
gbm: https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/gbm/backends/dri/gbm_dri.c?ref_type=heads#L852
modesetting: https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/hw/xfree86/drivers/modesetting/dumb_bo.c#L52
plymouth: https://gitlab.freedesktop.org/plymouth/plymouth/-/blob/main/src/plugins/renderers/drm/plugin.c?ref_type=heads#L235
Mesa also has other users besides gbm, but all of those appear to be
using designated initializers and do not assign anything into 'flags'.
If someone can think of other important users that might be
feeding stack garbage into the flags currently, let me know.
Cc: Daniel Stone <daniels@collabora.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/drm_dumb_buffers.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/drm_dumb_buffers.c b/drivers/gpu/drm/drm_dumb_buffers.c
index e9eed9a5b760..fdc249198022 100644
--- a/drivers/gpu/drm/drm_dumb_buffers.c
+++ b/drivers/gpu/drm/drm_dumb_buffers.c
@@ -197,6 +197,8 @@ int drm_mode_create_dumb(struct drm_device *dev,
return -ENOSYS;
if (!args->width || !args->height || !args->bpp)
return -EINVAL;
+ if (args->flags)
+ return -EINVAL;
/* overflow checks for 32bit size calculations */
if (args->bpp > U32_MAX - 8)
--
2.49.1
next prev parent reply other threads:[~2025-10-21 19:45 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-21 19:44 [PATCH 0/5] drm/uapi: Intoduce DRM_MODE_DUMB_CURSOR Ville Syrjala
2025-10-21 19:44 ` Ville Syrjala [this message]
2025-10-21 19:44 ` [PATCH 2/5] drm/uapi: Introduce the DRM_MODE_DUMB_CURSOR flag Ville Syrjala
2025-10-21 19:44 ` [PATCH 3/5] drm/i915/dumb: Move the display dumb buffer stuff into the display code Ville Syrjala
2025-10-21 19:44 ` [PATCH 4/5] drm/i915/dumb: Reject dumb buffer that exceed max fb dimensions Ville Syrjala
2025-10-21 19:44 ` [PATCH 5/5] drm/i915/dumb: Handle DRM_MODE_DUMB_CURSOR Ville Syrjala
2025-10-21 19:51 ` ✗ CI.checkpatch: warning for drm/uapi: Intoduce DRM_MODE_DUMB_CURSOR Patchwork
2025-10-21 19:52 ` ✓ CI.KUnit: success " Patchwork
2025-10-21 20:07 ` ✗ CI.checksparse: warning " Patchwork
2025-10-21 20:31 ` ✓ Xe.CI.BAT: success " Patchwork
2025-10-21 23:07 ` ✓ Xe.CI.Full: " Patchwork
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=20251021194455.24297-2-ville.syrjala@linux.intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=daniels@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.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