diff options
author | Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> | 2017-12-07 18:50:57 +0300 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2018-01-09 12:53:44 -0600 |
commit | 9156245ec49b36d934ed09d49ffbd5dd37285374 (patch) | |
tree | 79136c40765a7a3c320f09d1e169af3d2476513e /nbd/server.c | |
parent | 3cee4db661ab9c0fce7937b3bbfa188a1845f31f (diff) |
nbd/server: add additional assert to nbd_export_put
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>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20171207155102.66622-2-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'nbd/server.c')
-rw-r--r-- | nbd/server.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/nbd/server.c b/nbd/server.c index e443b3cf5c..6cf2eeb2c1 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -1190,6 +1190,12 @@ void nbd_export_put(NBDExport *exp) nbd_export_close(exp); } + /* 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. So, let's assert that + * it is > 0. + */ + assert(exp->refcount > 0); if (--exp->refcount == 0) { assert(exp->name == NULL); assert(exp->description == NULL); |