From: sashiko-bot@kernel.org
To: "Baineng Shou" <shoubaineng@gmail.com>
Cc: media-ci@linuxtv.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v5 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test
Date: Thu, 30 Jul 2026 06:38:17 +0000 [thread overview]
Message-ID: <20260730063818.533641F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260730062645.233148-5-shoubaineng@gmail.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Missing `errno` preservation leads to potential clobbering before evaluation.
- [Medium] Unconditional unmapping of `req` causes a file descriptor leak if `ioctl` unexpectedly succeeds.
--
--- Patch [4]: [PATCH v5 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test ---
commit 43e605bb1fee2426e027813c0311f1910f7ea15e
Author: Baineng Shou <shoubaineng@gmail.com>
selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test
Add a test case that verifies no file descriptor is leaked when
DMA_HEAP_IOCTL_ALLOC succeeds internally but copy_to_user() fails
to deliver the fd number back to userspace.
> diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c
> index fc9694fc4e89e..bd58e5b06c8b6 100644
> --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c
> +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c
[ ... ]
> +static void test_alloc_no_fd_leak_on_efault(char *heap_name)
> +{
[ ... ]
> + /*
> + * Make the page read-only: copy_from_user() in the kernel will
> + * still succeed (it already ran), but copy_to_user() that writes
> + * the fd number back will fault.
> + */
> + mprotect(req, page_size, PROT_READ);
> +
> + ret = ioctl(heap_fd, DMA_HEAP_IOCTL_ALLOC, req);
> +
> + /* Re-allow writes so munmap can clean up */
> + mprotect(req, page_size, PROT_READ | PROT_WRITE);
> + munmap(req, page_size);
> +
> + if (ret != -1 || errno != EFAULT) {
[Severity: Medium]
Will this evaluate the correct errno from the ioctl call?
The errno variable is checked after executing mprotect and munmap. If either of
these functions modify errno (for example, if they fail), the test will
evaluate the wrong errno and incorrectly skip with a misleading message instead
of reporting a failure or success properly.
[Severity: Medium]
Also, could this leak the newly allocated file descriptor in the test process
if the ioctl call unexpectedly succeeds?
If the ioctl call successfully allocates a file descriptor (for instance, if
the initial mprotect fails to make the page read-only or due to a kernel bug),
the new file descriptor is written to req->fd.
Since the test unconditionally calls munmap(req) immediately after, it destroys
the only reference to the allocated file descriptor. The test then detects
unexpected success, skips, and leaks the file descriptor in the test process.
> + /*
> + * If the ioctl didn't fail with EFAULT, either the kernel
> + * handled it differently or mprotect raced. Skip rather
> + * than giving a false pass/fail.
> + */
> + ksft_test_result_skip(
> + "ioctl did not return EFAULT (ret=%d errno=%d), skipping\n",
> + ret, errno);
> + goto out;
> + }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260730062645.233148-1-shoubaineng@gmail.com?part=4
next prev parent reply other threads:[~2026-07-30 6:38 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
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 [this message]
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=20260730063818.533641F000E9@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.