aio: fix newp->running data race

* sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Do not write
	`running` field of `newp` when a thread was started to process it,
	since that thread will not take `__aio_requests_mutex`, and the field
	already has the proper value actually.
This commit is contained in:
Samuel Thibault 2016-05-04 15:14:29 +02:00
parent 066746783d
commit fd67a9cf7b
2 changed files with 12 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2016-05-04 Samuel Thibault <samuel.thibault@ens-lyon.org>
* sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Do not write
`running` field of `newp` when a thread was started to process it,
since that thread will not take `__aio_requests_mutex`, and the field
already has the proper value actually.
2016-05-04 Florian Weimer <fweimer@redhat.com>
[BZ #19787]

View File

@ -453,7 +453,11 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
result = 0;
}
}
else
newp->running = running;
}
else
newp->running = running;
/* Enqueue the request in the run queue if it is not yet running. */
if (running == yes && result == 0)
@ -466,9 +470,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
pthread_cond_signal (&__aio_new_request_notification);
}
if (result == 0)
newp->running = running;
else
if (result != 0)
{
/* Something went wrong. */
__aio_free_request (newp);