From: sashiko-bot@kernel.org
To: "Baineng Shou" <shoubaineng@gmail.com>
Cc: media-ci@linuxtv.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v7 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test
Date: Mon, 17 Aug 2026 05:14:33 +0000 [thread overview]
Message-ID: <20260817051433.F3E9B1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260817050457.1005285-5-shoubaineng@gmail.com>
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [Medium] The test does not verify that `errno == EFAULT` when `ioctl` fails, which can lead to false positives if the allocation fails for other reasons.
- [Low] The return value of the first `mprotect` call is ignored.
- [Low] An unnecessary `mprotect` call is made to restore `PROT_WRITE` before `munmap`, accompanied by an inaccurate comment.
- [Low] If the `ioctl` unexpectedly succeeds, the newly allocated file descriptor is leaked.
--
--- Patch [4]: [PATCH v7 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test ---
commit 1be53f13852770ff6e3074adac5bd4f146ea6110
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..1d49df6719198 100644
> --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c
> +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c
[ ... ]
> @@ -390,6 +390,116 @@ static void test_alloc_errors(char *heap_name)
[ ... ]
> +static void test_alloc_no_fd_leak_on_efault(char *heap_name)
> +{
[ ... ]
> + /*
> + * Make the page read-only so copy_to_user() will fault. The
> + * ioctl must fail with -1; if it returns success the test setup
> + * is broken (mprotect is synchronous, so there is no race).
> + */
> + mprotect(req, page_size, PROT_READ);
[Severity: Low]
Does this code handle the case where mprotect() fails? If it fails, the memory
would remain writable, the ioctl would succeed, and the test would fail
confusingly instead of reporting a setup failure.
> +
> + 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);
[Severity: Low]
Is this mprotect() call necessary? munmap() manipulates the kernel's memory map
directly and doesn't require the underlying memory pages to have write
permissions to be unmapped.
> + munmap(req, page_size);
> +
> + if (ret != -1) {
[Severity: Low]
If the ioctl unexpectedly succeeds (for example if mprotect failed), does this
code leak the newly allocated file descriptor? By the time success is detected,
req has been unmapped, making it impossible to read req->fd to close it.
[Severity: Medium]
Does this code verify that the failure was actually caused by the expected
EFAULT? If the ioctl fails for unrelated reasons like -ENOMEM, ret will still
be -1, fd_before will equal fd_after, and the test will erroneously report PASS
even though the copy_to_user() fault path was never tested.
> + ksft_test_result_fail("ioctl returned %d, expected -1 EFAULT\n",
> + ret);
> + goto out;
> + }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260817050457.1005285-1-shoubaineng@gmail.com?part=4
next prev parent reply other threads:[~2026-08-17 5:14 UTC|newest]
Thread overview: 58+ 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-31 17:14 ` T.J. Mercier
2026-08-07 10:09 ` [PATCH v6 0/4] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Baineng Shou
2026-08-07 10:10 ` Baineng Shou
2026-08-07 10:10 ` [PATCH v6 1/4] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-08-07 10:10 ` [PATCH v6 0/4] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Baineng Shou
2026-08-07 10:11 ` Baineng Shou
2026-08-07 10:11 ` Baineng Shou
2026-08-07 10:11 ` [PATCH v6 1/4] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-08-07 10:11 ` [PATCH v6 2/4] misc: fastrpc: " Baineng Shou
2026-08-07 10:11 ` [PATCH v6 3/4] drm/prime: use dma_buf_fd_install() to preserve export tracing Baineng Shou
2026-08-07 10:22 ` sashiko-bot
2026-08-07 10:11 ` [PATCH v6 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test Baineng Shou
2026-08-07 10:20 ` sashiko-bot
2026-08-07 21:49 ` T.J. Mercier
2026-08-12 15:27 ` [PATCH v6 0/4] dma-buf: fix fd leak when copy_to_user() fails after fd_install() Sumit Semwal
2026-08-17 5:04 ` [PATCH v7 " Baineng Shou
2026-08-17 5:04 ` [PATCH v7 1/4] dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds Baineng Shou
2026-08-17 5:04 ` [PATCH v7 2/4] misc: fastrpc: " Baineng Shou
2026-08-17 5:20 ` sashiko-bot
2026-08-17 5:04 ` [PATCH v7 3/4] drm/prime: use dma_buf_fd_install() to preserve export tracing Baineng Shou
2026-08-17 5:14 ` sashiko-bot
2026-08-17 5:04 ` [PATCH v7 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test Baineng Shou
2026-08-17 5:14 ` sashiko-bot [this message]
2026-07-30 6:26 ` [PATCH v5 " Baineng Shou
2026-07-30 6:38 ` sashiko-bot
2026-07-31 17:09 ` T.J. Mercier
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=20260817051433.F3E9B1F000E9@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.