xfstests: aio-stress is calling pthread_join incorrectly
authorDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 18 Jun 2013 22:57:00 +0000 (17:57 -0500)
committerBen Myers <bpm@sgi.com>
Wed, 26 Jun 2013 16:21:38 +0000 (11:21 -0500)
The retval parameter to pthread_join() is a pointer to a pointer.
aio-stress is passing in a pointer to an int. This can result in a bus
error on sparc64 when the pointer is not aligned on a 64-bit boundary.
Since the return value is not used, it is simplest to pass a NULL
pointer instead.

This has been fixed in the LTP source:
https://github.com/linux-test-project/ltp/commit/981d33aad3b33c4625b88990fbf2fad5470d47e0

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
ltp/aio-stress.c

index 57a21583bf2b60680e7ca2fc7a9b3d1dacba3cf4..ebff1bd42a92e51cdd0de72e2419b840e91b19f2 100644 (file)
@@ -1210,7 +1210,6 @@ typedef void * (*start_routine)(void *);
 int run_workers(struct thread_info *t, int num_threads)
 {
     int ret;
-    int thread_ret;
     int i;
 
     for(i = 0 ; i < num_threads ; i++) {
@@ -1221,7 +1220,7 @@ int run_workers(struct thread_info *t, int num_threads)
        }
     }
     for(i = 0 ; i < num_threads ; i++) {
-        ret = pthread_join(t[i].tid, (void *)&thread_ret);
+        ret = pthread_join(t[i].tid, NULL);
         if (ret) {
            perror("pthread_join");
            exit(1);