]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/lightnvm/core.c
Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / lightnvm / core.c
index 6a4aa608ad958a51a270b0cbdcaec0961facca82..ddae430b6eae879333a84885256fcd8b14c0c1b6 100644 (file)
@@ -252,8 +252,9 @@ static int nvm_create_tgt(struct nvm_dev *dev, struct nvm_ioctl_create *create)
        }
        mutex_unlock(&dev->mlock);
 
-       if (nvm_reserve_luns(dev, s->lun_begin, s->lun_end))
-               return -ENOMEM;
+       ret = nvm_reserve_luns(dev, s->lun_begin, s->lun_end);
+       if (ret)
+               return ret;
 
        t = kmalloc(sizeof(struct nvm_target), GFP_KERNEL);
        if (!t) {
@@ -640,6 +641,7 @@ EXPORT_SYMBOL(nvm_max_phys_sects);
 int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
 {
        struct nvm_dev *dev = tgt_dev->parent;
+       int ret;
 
        if (!dev->ops->submit_io)
                return -ENODEV;
@@ -647,7 +649,12 @@ int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
        nvm_rq_tgt_to_dev(tgt_dev, rqd);
 
        rqd->dev = tgt_dev;
-       return dev->ops->submit_io(dev, rqd);
+
+       /* In case of error, fail with right address format */
+       ret = dev->ops->submit_io(dev, rqd);
+       if (ret)
+               nvm_rq_dev_to_tgt(tgt_dev, rqd);
+       return ret;
 }
 EXPORT_SYMBOL(nvm_submit_io);