Skip to content

Commit

Permalink
raw-posix: Handle failure for potentially large allocations
Browse files Browse the repository at this point in the history
Some code in the block layer makes potentially huge allocations. Failure
is not completely unexpected there, so avoid aborting qemu and handle
out-of-memory situations gracefully.

This patch addresses the allocations in the raw-posix block driver.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
  • Loading branch information
kevmw committed Aug 15, 2014
1 parent 4f4896d commit 50d4a85
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion block/raw-posix.c
Expand Up @@ -798,7 +798,11 @@ static ssize_t handle_aiocb_rw(RawPosixAIOData *aiocb)
* Ok, we have to do it the hard way, copy all segments into
* a single aligned buffer.
*/
buf = qemu_blockalign(aiocb->bs, aiocb->aio_nbytes);
buf = qemu_try_blockalign(aiocb->bs, aiocb->aio_nbytes);
if (buf == NULL) {
return -ENOMEM;
}

if (aiocb->aio_type & QEMU_AIO_WRITE) {
char *p = buf;
int i;
Expand Down

0 comments on commit 50d4a85

Please sign in to comment.