[Qemu-devel] [PULL 3/4] nbd/server: add additional assert to nbd_export_put

Eric Blake posted 4 patches 8 years, 1 month ago
[Qemu-devel] [PULL 3/4] nbd/server: add additional assert to nbd_export_put
Posted by Eric Blake 8 years, 1 month ago
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

This place is not obvious, nbd_export_close may theoretically reduce
refcount to 0. It may happen if someone calls nbd_export_put on named
export not through nbd_export_set_name when refcount is 1.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20171109154049.42386-2-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
---
 nbd/server.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/nbd/server.c b/nbd/server.c
index e443b3cf5c..a6d7c24663 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -1190,6 +1190,7 @@ void nbd_export_put(NBDExport *exp)
         nbd_export_close(exp);
     }

+    assert(exp->refcount > 0);
     if (--exp->refcount == 0) {
         assert(exp->name == NULL);
         assert(exp->description == NULL);
-- 
2.14.3