diff --git a/lib/bdev/null/bdev_null.c b/lib/bdev/null/bdev_null.c index e1b604420..eddb979a4 100644 --- a/lib/bdev/null/bdev_null.c +++ b/lib/bdev/null/bdev_null.c @@ -279,6 +279,12 @@ null_bdev_destroy_cb(void *io_device, void *ctx_buf) spdk_poller_unregister(&ch->poller); } +static void +_bdev_null_cleanup_cb(void *arg) +{ + spdk_free(g_null_read_buf); +} + static int bdev_null_initialize(void) { @@ -358,8 +364,10 @@ bdev_null_initialize(void) i++; } - end: + if (rc) { + spdk_io_device_unregister(&g_null_bdev_head, _bdev_null_cleanup_cb); + } return rc; } diff --git a/test/vhost/other/invalid.config b/test/vhost/other/invalid.config new file mode 100644 index 000000000..58b703068 --- /dev/null +++ b/test/vhost/other/invalid.config @@ -0,0 +1,18 @@ +# SPDK vhost configuration file +# +# Please write all parameters using ASCII. +# The parameter must be quoted if it includes whitespace. + +# Configuration syntax: +# Leading whitespace is ignored. +# Lines starting with '#' are comments. +# Lines ending with '\' are concatenated with the next line. +# Bracketed ([]) names define sections + +[Global] + # Instance ID for multi-process support + # Default: 0 + #InstanceID 0 + +[Null] + Dev null0 512 513 diff --git a/test/vhost/other/negative.sh b/test/vhost/other/negative.sh index 5728a2838..a34c462d4 100755 --- a/test/vhost/other/negative.sh +++ b/test/vhost/other/negative.sh @@ -49,6 +49,11 @@ if $VHOST_APP -c /path/to/non_existing_file/conf -f $SPDK_VHOST_SCSI_TEST_DIR/vh fail "vhost started when specifying invalid config file" fi +# Testing vhost start with invalid config. Vhost will exit with error as bdev module init failed +if $VHOST_APP -c $NEGATIVE_BASE_DIR/invalid.config; then + fail "vhost started when specifying invalid config file" +fi + # Expecting vhost to fail if an incorrect argument is given if $VHOST_APP -x -h; then fail "vhost started with invalid -x command line option"