diff options
author | pjd <pjd@FreeBSD.org> | 2004-07-05 13:24:22 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2004-07-05 13:24:22 +0000 |
commit | c3fce26a1fd15bf5024b15e70a30388013c683b6 (patch) | |
tree | 9bc2e74930010d76fb843218128abb55f19bc61a | |
parent | 99daa57e073ba3543a1793b38239966d5621bab6 (diff) | |
download | FreeBSD-src-c3fce26a1fd15bf5024b15e70a30388013c683b6.zip FreeBSD-src-c3fce26a1fd15bf5024b15e70a30388013c683b6.tar.gz |
g_clone_bio() can fail, be ready for this.
Approved by: le
-rw-r--r-- | sys/geom/vinum/geom_vinum.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/geom/vinum/geom_vinum.c b/sys/geom/vinum/geom_vinum.c index c4e96f4..ebd92e2 100644 --- a/sys/geom/vinum/geom_vinum.c +++ b/sys/geom/vinum/geom_vinum.c @@ -93,8 +93,12 @@ gv_start(struct bio *bp) case BIO_WRITE: case BIO_DELETE: bp2 = g_clone_bio(bp); - bp2->bio_done = g_std_done; - g_io_request(bp2, LIST_FIRST(&gp->consumer)); + if (bp2 == NULL) + g_io_deliver(bp, ENOMEM); + else { + bp2->bio_done = g_std_done; + g_io_request(bp2, LIST_FIRST(&gp->consumer)); + } return; default: g_io_deliver(bp, EOPNOTSUPP); |