int res = 0;
struct scst_user_dev *dev;
struct scst_user_cmd *ucmd;
- struct scst_cmd *cmd;
+ struct scst_cmd *cmd = NULL;
struct scst_user_get_ext_cdb get;
TRACE_ENTRY();
TRACE_MGMT_DBG("Invalid ucmd state %d for cmd_h %d",
ucmd->state, get.cmd_h);
res = -EINVAL;
- goto out_put;
+ goto out_unlock;
}
spin_unlock_irq(&dev->cmd_lists.cmd_list_lock);
res = scst_suspend_activity(true);
if (res != 0)
- goto out;
+ goto out_up;
res = __dev_user_set_opt(dev, opt);
scst_resume_activity();
+out_up:
up_read(&dev->dev_rwsem);
out:
sgv_pool_flush(dev->pool_clust);
sgv_pool_flush(dev->pool);
- TRACE_DBG("Unregistering finished (dev %p)", dev);
+ TRACE_MGMT_DBG("Unregistering finished (dev %p)", dev);
dev->cleanup_done = 1;
sgv_pool_del(dev->pool_clust);
sgv_pool_del(dev->pool);
- up_write(&dev->dev_rwsem); /* to make the debug check happy */
+ up_write(&dev->dev_rwsem); /* to make lockdep happy */
- TRACE_DBG("Releasing completed (dev %p)", dev);
+ TRACE_MGMT_DBG("Releasing completed (dev %p)", dev);
kfree(dev);