From: sashiko-bot@kernel.org
To: "Baineng Shou" <shoubaineng@gmail.com>
Cc: dri-devel@lists.freedesktop.org, media-ci@linuxtv.org
Subject: Re: [PATCH v5 3/4] drm/prime: use dma_buf_fd_install() to preserve export tracing
Date: Thu, 30 Jul 2026 06:40:49 +0000 [thread overview]
Message-ID: <20260730064050.479471F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260730062645.233148-4-shoubaineng@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] The file descriptor is published to userspace before the `copy_to_user()` operation succeeds, leading to a leaked fd and `dma_buf` reference if the copy fails.
--
--- Patch [3]: [PATCH v5 3/4] drm/prime: use dma_buf_fd_install() to preserve export tracing ---
commit 50a50a53aa7179af6880f9711b00fcaf6105ea33
Author: Baineng Shou <shoubaineng@gmail.com>
drm/prime: use dma_buf_fd_install() to preserve export tracing
This commit replaces the open-coded fd reservation and installation in
drm_gem_prime_handle_to_fd with dma_buf_fd_install. This restores the
trace_dma_buf_fd tracepoint coverage that was bypassed by using fd_install
directly.
Link: https://lore.kernel.org/dri-devel/20260714114654.3885457-2-shoubaineng@gmail.com/
> Replace the bare fd_install() with dma_buf_fd_install(), which wraps
> fd_install() together with DMA_BUF_TRACE(), restoring full tracepoint
> coverage. No functional change; the fd lifecycle (get_unused_fd_flags
> → work → install) is already correct.
[Severity: High]
This is a pre-existing issue, but is the statement about the fd lifecycle
being already correct accurate?
In drm_gem_prime_handle_to_fd(), the file descriptor is published to the
process's fd table before the ioctl data is copied back to user space:
drivers/gpu/drm/drm_prime.c:drm_gem_prime_handle_to_fd() {
...
dma_buf_fd_install(dmabuf, fd);
*prime_fd = fd;
return 0;
}
The actual copy_to_user() happens later in the DRM ioctl wrapper:
drivers/gpu/drm/drm_ioctl.c:drm_ioctl() {
...
retcode = drm_ioctl_kernel(filp, func, kdata, ioctl->flags);
if (copy_to_user((void __user *)arg, kdata, out_size) != 0)
retcode = -EFAULT;
...
}
If a user application allocates a page, maps it as read-only, constructs
a valid drm_prime_handle payload within it, and invokes
DRM_IOCTL_PRIME_HANDLE_TO_FD, the core drm_ioctl() successfully reads the
input. The handler executes, allocates the dmabuf, and publishes the file
descriptor.
When drm_ioctl() attempts to write the result back via copy_to_user(), it
fails due to the read-only mapping, causing the ioctl to return -EFAULT.
Since the fd is already published and the userspace application does not
know the fd number to close it, does this result in a leak of the file
descriptor and dmabuf references?
> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
> index 9b44c78cd77fc..fe3436d1235db 100644
> --- a/drivers/gpu/drm/drm_prime.c
> +++ b/drivers/gpu/drm/drm_prime.c
> @@ -524,7 +524,7 @@ int drm_gem_prime_handle_to_fd(struct drm_device *dev,
> return PTR_ERR(dmabuf);
> }
>
> - fd_install(fd, dmabuf->file);
> + dma_buf_fd_install(dmabuf, fd);
> *prime_fd = fd;
> return 0;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260730062645.233148-1-shoubaineng@gmail.com?part=3
next prev parent reply other threads:[~2026-07-30 6:40 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-03 8:09 [PATCH] dma-buf: dma-heap: close installed fd when copy_to_user() fails Baineng Shou
2026-07-03 8:17 ` sashiko-bot
2026-07-03 8:26 ` Christian König
2026-07-10 10:57 ` [PATCH v2] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-07-10 11:06 ` sashiko-bot
2026-07-10 20:20 ` T.J. Mercier
2026-07-11 4:18 ` 寿柏能
2026-07-13 23:33 ` T.J. Mercier
2026-07-14 11:46 ` [PATCH v3 0/2] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Baineng Shou
2026-07-14 11:46 ` [PATCH v3 1/2] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-07-14 13:13 ` David Laight
2026-07-14 13:38 ` 寿柏能
2026-07-14 14:33 ` David Laight
2026-07-15 2:04 ` 寿柏能
[not found] ` <CAGCp47zxaZsoBKeXz2YdyxbX8QOy_g8dGwnC9gVpJ-Sqng48Qg@mail.gmail.com>
2026-07-28 6:35 ` Sumit Semwal
2026-07-30 6:25 ` [PATCH v5 0/4] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Baineng Shou
2026-07-30 6:25 ` [PATCH v5 1/4] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-07-30 6:25 ` [PATCH v5 2/4] misc: fastrpc: " Baineng Shou
2026-07-30 6:26 ` [PATCH v5 0/4] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Baineng Shou
2026-07-30 6:26 ` [PATCH v5 1/4] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-07-30 6:26 ` [PATCH v5 2/4] misc: fastrpc: " Baineng Shou
2026-07-30 6:26 ` [PATCH v5 3/4] drm/prime: use dma_buf_fd_install() to preserve export tracing Baineng Shou
2026-07-30 6:40 ` sashiko-bot [this message]
2026-07-30 6:26 ` [PATCH v5 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test Baineng Shou
2026-07-30 6:38 ` sashiko-bot
2026-07-14 11:46 ` [PATCH v3 2/2] misc: fastrpc: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-07-14 12:08 ` sashiko-bot
2026-07-15 20:44 ` T.J. Mercier
2026-07-14 12:24 ` [PATCH v3 0/2] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Christian König
2026-07-14 13:27 ` [PATCH v3] drm/prime: use dma_buf_fd_install() to preserve export tracing Baineng Shou
2026-07-14 13:45 ` sashiko-bot
2026-07-10 12:33 ` [PATCH v2] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Christian König
2026-07-11 4:14 ` Baineng Shou
2026-07-11 4:29 ` 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=20260730064050.479471F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=media-ci@linuxtv.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=shoubaineng@gmail.com \
/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.