diff --git a/scst/src/dev_handlers/scst_user.c b/scst/src/dev_handlers/scst_user.c index 0160a18de..f2d1ac1ab 100644 --- a/scst/src/dev_handlers/scst_user.c +++ b/scst/src/dev_handlers/scst_user.c @@ -3094,8 +3094,8 @@ static int dev_user_release(struct inode *inode, struct file *file) scst_unregister_virtual_device(dev->virt_id); scst_unregister_virtual_dev_driver(&dev->devtype); - sgv_pool_del(dev->pool_clust); - sgv_pool_del(dev->pool); + sgv_pool_flush(dev->pool_clust); + sgv_pool_flush(dev->pool); TRACE_DBG("Unregistering finished (dev %p)", dev); @@ -3106,6 +3106,9 @@ static int dev_user_release(struct inode *inode, struct file *file) wait_for_completion(&dev->cleanup_cmpl); + sgv_pool_del(dev->pool_clust); + sgv_pool_del(dev->pool); + up_write(&dev->dev_rwsem); /* to make the debug check happy */ TRACE_DBG("Releasing completed (dev %p)", dev);