Message ID | 1583589765-19344-1-git-send-email-hexiaolong2008@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2] dma-buf: heaps: bugfix for selftest failure | expand |
On 3/7/20 7:02 AM, Leon He wrote: > From: Leon He <leon.he@unisoc.com> > > There are two errors in the dmabuf-heap selftest: > 1. The 'char name[5]' was not initialized to zero, which will cause > strcmp(name, "vgem") failed in check_vgem(). > 2. The return value of test_alloc_errors() should be reversed, other- > wise the while loop in main() will be broken. > > Signed-off-by: Leon He <leon.he@unisoc.com> > --- > tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > index cd5e1f6..836b185 100644 > --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > @@ -22,7 +22,7 @@ > static int check_vgem(int fd) > { > drm_version_t version = { 0 }; > - char name[5]; > + char name[5] = { 0 }; > int ret; > > version.name_len = 4; Please see my comment on v1 for this. > @@ -357,7 +357,7 @@ static int test_alloc_errors(char *heap_name) > if (heap_fd >= 0) > close(heap_fd); > > - return ret; > + return !ret; This change doesn't make sense. Initializing ret to 0 is a better way to go. thanks, -- Shuah
Dear Shuah: > > @@ -357,7 +357,7 @@ static int test_alloc_errors(char *heap_name) > > if (heap_fd >= 0) > > close(heap_fd); > > > > - return ret; > > + return !ret; > > This change doesn't make sense. Initializing ret to 0 is a better > way to go. > I don't agree with you about this comment. Initializing ret to 0 can not solve this problem. Because the ret value will be override by the following dmabuf_heap_alloc() calls. static int test_alloc_errors(char *heap_name) { int ret; ret = dmabuf_heap_alloc(...); ... ret = dmabuf_heap_alloc(...); ... ret = dmabuf_heap_alloc_fdflags(...); ... return ret; } The purpose for test_alloc_errors() is to pass some invalid parameters to dmabuf_heap_alloc() and wish it return some errors. So -1 is what we expect from test_alloc_errors(). But the code in main() will break the loop when the ret value is -1. So I reversed the return value in test_alloc_errors(). int main(void) { while(...) { ... ret = test_alloc_errors(dir->d_name); if (ret) break; } } thanks, -- Leon
Hi Leon, Shuah, Thanks for the fix. I had this issue pending to fix, but have been lazy about it, I appreciate you are taking care of it! On Sat, 7 Mar 2020 at 11:03, Leon He <hexiaolong2008@gmail.com> wrote: > > From: Leon He <leon.he@unisoc.com> > > There are two errors in the dmabuf-heap selftest: > 1. The 'char name[5]' was not initialized to zero, which will cause > strcmp(name, "vgem") failed in check_vgem(). > 2. The return value of test_alloc_errors() should be reversed, other- > wise the while loop in main() will be broken. > > Signed-off-by: Leon He <leon.he@unisoc.com> > --- > tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > index cd5e1f6..836b185 100644 > --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c > @@ -22,7 +22,7 @@ > static int check_vgem(int fd) > { > drm_version_t version = { 0 }; > - char name[5]; > + char name[5] = { 0 }; > int ret; > As Shuah already mentioned, I think we want to use strncmp to be on the safe side. > version.name_len = 4; > @@ -357,7 +357,7 @@ static int test_alloc_errors(char *heap_name) > if (heap_fd >= 0) > close(heap_fd); > > - return ret; > + return !ret; I agree with Shuah, this change makes no sense, just drop it. I think the fact this test was broken and nobody noticed uncovers the fact that the test isn't being run. Any reason why this test isn't a regular TARGET? Or any idea how we can make sure this is run by CIs and any other testing system? Thanks! Ezequiel > } > > int main(void) > -- > 2.7.4 >
diff --git a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c index cd5e1f6..836b185 100644 --- a/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c +++ b/tools/testing/selftests/dmabuf-heaps/dmabuf-heap.c @@ -22,7 +22,7 @@ static int check_vgem(int fd) { drm_version_t version = { 0 }; - char name[5]; + char name[5] = { 0 }; int ret; version.name_len = 4; @@ -357,7 +357,7 @@ static int test_alloc_errors(char *heap_name) if (heap_fd >= 0) close(heap_fd); - return ret; + return !ret; } int main(void)