Skip to content

Commit

Permalink
Don't assume __aio_find_req_fd succeeds since the request might alrea…
Browse files Browse the repository at this point in the history
…dy be processed. Don't do the list handling here, call __aio_remove_request.
  • Loading branch information
Ulrich Drepper committed Jul 27, 2000
1 parent da8f38c commit 950c119
Showing 1 changed file with 13 additions and 35 deletions.
48 changes: 13 additions & 35 deletions rt/aio_cancel.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,20 @@ aio_cancel (fildes, aiocbp)

req = __aio_find_req_fd (fildes);

if (req == NULL)
{
not_found:
pthread_mutex_unlock (&__aio_requests_mutex);
__set_errno (EINVAL);
return -1;
}

while (req->aiocbp != (aiocb_union *) aiocbp)
{
last = req;
req = req->next_prio;
if (req == NULL)
{
pthread_mutex_unlock (&__aio_requests_mutex);
__set_errno (EINVAL);
return -1;
}
goto not_found;
}

/* Don't remove the entry if a thread is already working on it. */
Expand All @@ -74,28 +78,7 @@ aio_cancel (fildes, aiocbp)
else if (req->running == yes)
{
/* We can remove the entry. */
if (last != NULL)
last->next_prio = req->next_prio;
else
if (req->next_prio == NULL)
{
if (req->last_fd != NULL)
req->last_fd->next_fd = req->next_fd;
if (req->next_fd != NULL)
req->next_fd->last_fd = req->last_fd;
}
else
{
if (req->last_fd != NULL)
req->last_fd->next_fd = req->next_prio;
if (req->next_fd != NULL)
req->next_fd->last_fd = req->next_prio;
req->next_prio->last_fd = req->last_fd;
req->next_prio->next_fd = req->next_fd;

/* Mark this entry as runnable. */
req->next_prio->running = yes;
}
__aio_remove_request (last, req, 0);

result = AIO_CANCELED;
}
Expand All @@ -122,15 +105,10 @@ aio_cancel (fildes, aiocbp)
result = AIO_NOTCANCELED;
}
else
{
/* Remove entry from the file descriptor list. */
if (req->last_fd != NULL)
req->last_fd->next_fd = req->next_fd;
if (req->next_fd != NULL)
req->next_fd->last_fd = req->last_fd;
result = AIO_CANCELED;

result = AIO_CANCELED;
}
/* We can remove the entry. */
__aio_remove_request (NULL, req, 1);
}
}

Expand Down

0 comments on commit 950c119

Please sign in to comment.