[PATCH bpf-next v5 4/5] selftests/bpf: Add test for dmabuf_iter

T.J. Mercier tjmercier at google.com
Mon May 12 19:10:31 UTC 2025


On Mon, May 12, 2025 at 11:58 AM Song Liu <song at kernel.org> wrote:
>
> On Mon, May 12, 2025 at 10:41 AM T.J. Mercier <tjmercier at google.com> wrote:
> [...]
> > +
> > +static int udmabuf;
>
> static int udmabuf = -1;
>
> > +static const char udmabuf_test_buffer_name[DMA_BUF_NAME_LEN] = "udmabuf_test_buffer_for_iter";
> > +static size_t udmabuf_test_buffer_size;
> > +static int sysheap_dmabuf;
>
> static int sysheap_dmabuf = -1;

We don't really need the -1 since the rework in this version
initializes them to -1 on failure, but I'll add it anyway.

> > +static const char sysheap_test_buffer_name[DMA_BUF_NAME_LEN] = "sysheap_test_buffer_for_iter";
> > +static size_t sysheap_test_buffer_size;
> > +
> > +static int create_udmabuf(void)
> > +{
> > +       struct udmabuf_create create;
>
> nit: zero initialize create to be future proof.

Ok, done.

>
> > +       int dev_udmabuf, memfd, local_udmabuf;
> > +
> > +       udmabuf_test_buffer_size = 10 * getpagesize();
>
> [...]
>
> > +static void subtest_dmabuf_iter_check_default_iter(struct dmabuf_iter *skel)
> > +{
> > +       bool found_test_sysheap_dmabuf = false;
> > +       bool found_test_udmabuf = false;
> > +       struct DmabufInfo bufinfo;
> > +       size_t linesize = 0;
> > +       char *line = NULL;
> > +       FILE *iter_file;
> > +       int iter_fd, f = INODE;
> > +
> > +       iter_fd = bpf_iter_create(bpf_link__fd(skel->links.dmabuf_collector));
> > +       ASSERT_OK_FD(iter_fd, "iter_create");
>
> Should we check ASSERT_OK_FD() and exit early on
> failures?

We should fallthrough on error, but let's add the early out.

>
> > +
> > +       iter_file = fdopen(iter_fd, "r");
> > +       ASSERT_OK_PTR(iter_file, "fdopen");
>
> Same here.
> [...]
> > +/*
> > + * Fields output by this iterator are delimited by newlines. Convert any
> > + * newlines in user-provided printed strings to spaces.
> > + */
> > +static void sanitize_string(char *src, size_t size)
> > +{
> > +       for (char *c = src; c && (size_t)(c - src) < size; ++c)
>
> Should this be:
>
>   for (char *c = src; *c && (size_t)(c - src) < size; ++c)
>
> ?

Yes! Thanks.

> Thanks,
> Song
>
> [...]


More information about the dri-devel mailing list