]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
selftests/bpf: Fix OOB read in dmabuf_collector
authorT.J. Mercier <tjmercier@google.com>
Wed, 25 Feb 2026 00:33:48 +0000 (16:33 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 26 Feb 2026 19:28:04 +0000 (11:28 -0800)
Dmabuf name allocations can be less than DMA_BUF_NAME_LEN characters,
but bpf_probe_read_kernel always tries to read exactly that many bytes.
If a name is less than DMA_BUF_NAME_LEN characters,
bpf_probe_read_kernel will read past the end. bpf_probe_read_kernel_str
stops at the first NUL terminator so use it instead, like
iter_dmabuf_for_each already does.

Fixes: ae5d2c59ecd7 ("selftests/bpf: Add test for dmabuf_iter")
Reported-by: Jerome Lee <jaewookl@quicinc.com>
Signed-off-by: T.J. Mercier <tjmercier@google.com>
Link: https://lore.kernel.org/r/20260225003349.113746-1-tjmercier@google.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/dmabuf_iter.c

index 13cdb11fdeb2bf0ee7e80c1f4177369b2231762d..9cbb7442646e583d82110e57a4ea63defe3f9db1 100644 (file)
@@ -48,7 +48,7 @@ int dmabuf_collector(struct bpf_iter__dmabuf *ctx)
 
        /* Buffers are not required to be named */
        if (pname) {
-               if (bpf_probe_read_kernel(name, sizeof(name), pname))
+               if (bpf_probe_read_kernel_str(name, sizeof(name), pname) < 0)
                        return 1;
 
                /* Name strings can be provided by userspace */