All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Baineng Shou" <shoubaineng@gmail.com>
Cc: dri-devel@lists.freedesktop.org, media-ci@linuxtv.org
Subject: Re: [PATCH v6 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test
Date: Fri, 07 Aug 2026 10:20:20 +0000	[thread overview]
Message-ID: <20260807102021.0B6BD1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260807101140.1357218-5-shoubaineng@gmail.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The regression test silently reports a false pass if the ioctl fails for a reason other than the expected -EFAULT.
- [Low] A file descriptor is leaked on the test's failure path if the ioctl unexpectedly succeeds.
--

--- Patch [4]: [PATCH v6 4/4] selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test ---
commit 2ee174de4cce870677ff17aa1714b40304934392
Author: Baineng Shou <shoubaineng@gmail.com>

selftests: dmabuf-heaps: add fd-leak-on-EFAULT regression test

This commit adds 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. It triggers the failure by placing the ioctl
argument in a private anonymous page and changing it to PROT_READ between
the copy_from_user() and copy_to_user() calls.

> 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
[ ... ]
> +	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);
> +

[Severity: Low]
Does this code leak the newly allocated file descriptor if the ioctl
unexpectedly succeeds?

Since the test unmaps the req structure immediately after the ioctl, the
returned file descriptor stored in req->fd is lost. If the ioctl returned 0,
the fd cannot be read and closed before the test jumps to the error path.

> +	if (ret != -1) {

[Severity: Medium]
Will this silently report a false pass if the ioctl fails for a reason other
than the expected EFAULT?

The test checks that the return value is -1, but doesn't verify that
errno == EFAULT. If the ioctl fails early (for example, returning -EINVAL
or -ENOMEM) before reaching the copy_to_user() step, the fd count remains
unchanged and the test passes, even though the EFAULT 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/20260807101140.1357218-1-shoubaineng@gmail.com?part=4

  reply	other threads:[~2026-08-07 10:20 UTC|newest]

Thread overview: 49+ 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 [this message]
2026-08-07 21:49                                     ` T.J. Mercier
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=20260807102021.0B6BD1F000E9@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.