Signed-off-by: David Vrabel <david.vrabel@csr.com>
        unsigned long flags;
        dma_addr_t dma_addr;
        int t;
+       int ret = 0;
 
        mutex_lock(&whc->mutex);
 
                dev_err(&whc->umc->dev, "generic command timeout (%04x/%04x)\n",
                        le_readl(whc->base + WUSBGENCMDSTS),
                        le_readl(whc->base + WUSBGENCMDPARAMS));
-               return -ETIMEDOUT;
+               ret = -ETIMEDOUT;
+               goto out;
        }
 
        if (addr) {
                  whc->base + WUSBGENCMDSTS);
 
        spin_unlock_irqrestore(&whc->lock, flags);
-
+out:
        mutex_unlock(&whc->mutex);
 
-       return 0;
+       return ret;
 }