Re: [PATCH v2] selftests: Open /dev/udmabuf O_RDONLY
From: Bobby Eshleman
Date: Thu Jul 02 2026 - 16:53:36 EST
On Wed, Jul 01, 2026 at 12:22:08PM -0700, T.J. Mercier wrote:
> Write permissions on the /dev/udmabuf device file are not required to
> issue ioctls and allocate udmabufs. Applications should be opening this
> file as O_RDONLY. The BPF dmabuf_iter selftest already does this. [1]
>
> Users are pointing to these selftests as examples of how use udmabuf,
> and encountering permission errors on systems where write permissions
> are not available on /dev/udmabuf. Apply the principle of least
> privilege to selftests which use udmabuf by removing the write access
> mode from drivers/dma-buf/udmabuf.c and drivers/net/hw/ncdevmem.c.
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/testing/selftests/bpf/prog_tests/dmabuf_iter.c?h=v7.1#n49
>
> Signed-off-by: T.J. Mercier <tjmercier@xxxxxxxxxx>
> ---
> tools/testing/selftests/drivers/dma-buf/udmabuf.c | 2 +-
> tools/testing/selftests/drivers/net/hw/ncdevmem.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/drivers/dma-buf/udmabuf.c b/tools/testing/selftests/drivers/dma-buf/udmabuf.c
> index d78aec662586..ced0b95c876c 100644
> --- a/tools/testing/selftests/drivers/dma-buf/udmabuf.c
> +++ b/tools/testing/selftests/drivers/dma-buf/udmabuf.c
> @@ -140,7 +140,7 @@ int main(int argc, char *argv[])
> ksft_print_header();
> ksft_set_plan(7);
>
> - devfd = open("/dev/udmabuf", O_RDWR);
> + devfd = open("/dev/udmabuf", O_RDONLY);
> if (devfd < 0) {
> ksft_print_msg(
> "%s: [skip,no-udmabuf: Unable to access DMA buffer device file]\n",
> diff --git a/tools/testing/selftests/drivers/net/hw/ncdevmem.c b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
> index e098d6534c3c..8114a29692fd 100644
> --- a/tools/testing/selftests/drivers/net/hw/ncdevmem.c
> +++ b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
> @@ -149,7 +149,7 @@ static struct memory_buffer *udmabuf_alloc(size_t size)
>
> ctx->size = size;
>
> - ctx->devfd = open("/dev/udmabuf", O_RDWR);
> + ctx->devfd = open("/dev/udmabuf", O_RDONLY);
> if (ctx->devfd < 0) {
> pr_err("[skip,no-udmabuf: Unable to access DMA buffer device file]");
> goto err_free_ctx;
>
> base-commit: fbb7ad31ab376c5101b2ac7205fad0344fd2de60
> --
> 2.55.0.rc0.799.gd6f94ed593-goog
>
Reviewed-by: Bobby Eshleman <bobbyeshleman@xxxxxxxx>