Message ID | 20240708134654.1725-1-yuzenghui@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | kselftests: dmabuf-heaps: Ensure the driver name is null-terminated | expand |
On Mon, Jul 8, 2024 at 6:47 AM Zenghui Yu <yuzenghui@huawei.com> wrote: > > Even if a vgem device is configured in, we will skip the import_vgem_fd() > test almost every time. > > TAP version 13 > 1..11 > # Testing heap: system > # ======================================= > # Testing allocation and importing: > ok 1 # SKIP Could not open vgem -1 > > The problem is that we use the DRM_IOCTL_VERSION ioctl to query the driver > version information but leave the name field a non-null-terminated string. > Terminate it properly to actually test against the vgem device. Hm yeah. Looks like drm_copy_field resets version.name to the actual size of the name in the case of truncation, so maybe worth checking that too in case there is a name like "vgemfoo" that gets converted to "vgem\0" by this? > > Signed-off-by: Zenghui Yu <yuzenghui@huawei.com> > --- > tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > index 5f541522364f..2fcc74998fa9 100644 > --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > @@ -32,6 +32,8 @@ static int check_vgem(int fd) > if (ret) > return 0; > > + name[4] = '\0'; > + > return !strcmp(name, "vgem"); > } > > -- > 2.33.0 >
On 2024/7/9 1:49, T.J. Mercier wrote: > On Mon, Jul 8, 2024 at 6:47 AM Zenghui Yu <yuzenghui@huawei.com> wrote: > > > > Even if a vgem device is configured in, we will skip the import_vgem_fd() > > test almost every time. > > > > TAP version 13 > > 1..11 > > # Testing heap: system > > # ======================================= > > # Testing allocation and importing: > > ok 1 # SKIP Could not open vgem -1 > > > > The problem is that we use the DRM_IOCTL_VERSION ioctl to query the driver > > version information but leave the name field a non-null-terminated string. > > Terminate it properly to actually test against the vgem device. > > Hm yeah. Looks like drm_copy_field resets version.name to the actual > size of the name in the case of truncation, so maybe worth checking > that too in case there is a name like "vgemfoo" that gets converted to > "vgem\0" by this? Given that drm_copy_field() would set version.name_len to the exact length of the driver name, this can be addressed by diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c index 2fcc74998fa9..5d0a809dc2df 100644 --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c @@ -29,7 +29,7 @@ static int check_vgem(int fd) version.name = name; ret = ioctl(fd, DRM_IOCTL_VERSION, &version); - if (ret) + if (ret || version.name_len != 4) return 0; name[4] = '\0'; on top of this patch. What do you think? Thanks, Zenghui
diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c index 5f541522364f..2fcc74998fa9 100644 --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c @@ -32,6 +32,8 @@ static int check_vgem(int fd) if (ret) return 0; + name[4] = '\0'; + return !strcmp(name, "vgem"); }
Even if a vgem device is configured in, we will skip the import_vgem_fd() test almost every time. TAP version 13 1..11 # Testing heap: system # ======================================= # Testing allocation and importing: ok 1 # SKIP Could not open vgem -1 The problem is that we use the DRM_IOCTL_VERSION ioctl to query the driver version information but leave the name field a non-null-terminated string. Terminate it properly to actually test against the vgem device. Signed-off-by: Zenghui Yu <yuzenghui@huawei.com> --- tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c | 2 ++ 1 file changed, 2 insertions(+)