|
|
@@ -141,10 +141,13 @@ static int register_ieq(struct ism_dev *ism)
|
|
|
|
|
|
static int unregister_sba(struct ism_dev *ism)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
if (!ism->sba)
|
|
|
return 0;
|
|
|
|
|
|
- if (ism_cmd_simple(ism, ISM_UNREG_SBA))
|
|
|
+ ret = ism_cmd_simple(ism, ISM_UNREG_SBA);
|
|
|
+ if (ret && ret != ISM_ERROR)
|
|
|
return -EIO;
|
|
|
|
|
|
dma_free_coherent(&ism->pdev->dev, PAGE_SIZE,
|
|
|
@@ -158,10 +161,13 @@ static int unregister_sba(struct ism_dev *ism)
|
|
|
|
|
|
static int unregister_ieq(struct ism_dev *ism)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
if (!ism->ieq)
|
|
|
return 0;
|
|
|
|
|
|
- if (ism_cmd_simple(ism, ISM_UNREG_IEQ))
|
|
|
+ ret = ism_cmd_simple(ism, ISM_UNREG_IEQ);
|
|
|
+ if (ret && ret != ISM_ERROR)
|
|
|
return -EIO;
|
|
|
|
|
|
dma_free_coherent(&ism->pdev->dev, PAGE_SIZE,
|
|
|
@@ -288,7 +294,7 @@ static int ism_unregister_dmb(struct smcd_dev *smcd, struct smcd_dmb *dmb)
|
|
|
cmd.request.dmb_tok = dmb->dmb_tok;
|
|
|
|
|
|
ret = ism_cmd(ism, &cmd);
|
|
|
- if (ret)
|
|
|
+ if (ret && ret != ISM_ERROR)
|
|
|
goto out;
|
|
|
|
|
|
ism_free_dmb(ism, dmb);
|