Kevin Wolf <kw...@redhat.com> writes: > 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 rbd block driver. > > Signed-off-by: Kevin Wolf <kw...@redhat.com> > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > block/rbd.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/block/rbd.c b/block/rbd.c > index dbc79f4..2ac65a8 100644 > --- a/block/rbd.c > +++ b/block/rbd.c > @@ -630,7 +630,10 @@ static BlockDriverAIOCB *rbd_start_aio(BlockDriverState > *bs, > if (cmd == RBD_AIO_DISCARD || cmd == RBD_AIO_FLUSH) { > acb->bounce = NULL; > } else { > - acb->bounce = qemu_blockalign(bs, qiov->size); > + acb->bounce = qemu_try_blockalign(bs, qiov->size); > + if (acb->bounce == NULL) { > + goto failed; > + } > } > acb->ret = 0; > acb->error = 0;
/work/armbru/qemu/block/rbd.c: In function ‘rbd_start_aio’: /work/armbru/qemu/block/rbd.c:696:11: warning: ‘rcb’ may be used uninitialized in this function [-Wmaybe-uninitialized] g_free(rcb); ^ Fix is obvious: initialize it to null.