@@ -81,6 +81,7 @@ void qmp_nbd_server_add(const char *device, bool has_writable, bool writable,
BlockDriverState *bs;
NBDExport *exp;
NBDCloseNotifier *n;
+ DriveInfo *dinfo;
if (server_fd == -1) {
error_setg(errp, "NBD server not running");
@@ -109,7 +110,10 @@ void qmp_nbd_server_add(const char *device, bool has_writable, bool writable,
nbd_server_put_ref);
nbd_export_set_name(exp, device);
- drive_get_ref(drive_get_by_blockdev(bs));
+ dinfo = drive_get_by_blockdev(bs);
+ if (dinfo) {
+ drive_get_ref(dinfo);
+ }
n = g_malloc0(sizeof(NBDCloseNotifier));
n->n.notify = nbd_close_notifier;
Signed-off-by: Fam Zheng <famz@redhat.com> --- blockdev-nbd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)