summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWenwei Tao <ww.tao0320@gmail.com>2015-11-28 18:49:25 +0300
committerJens Axboe <axboe@fb.com>2015-11-30 00:34:58 +0300
commitd160147b5c96ef5ec842c604ccd79f5f03306677 (patch)
tree2672290a927b3af161f3cc0ab0e276de7d06cefd
parent76e25081b6ae60fb094328dedf900ec15f10a9fd (diff)
downloadlinux-d160147b5c96ef5ec842c604ccd79f5f03306677.tar.xz
lightnvm: do device max sectors boundary check first
do device max_phys_sect boundary check first, otherwise we will allocate dma_pools for devices whose max sectors are beyond lightnvm support and register them. Signed-off-by: Wenwei Tao <ww.tao0320@gmail.com> Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--drivers/lightnvm/core.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index ea50fa5b6ba6..ea6dba530f0a 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -308,6 +308,12 @@ int nvm_register(struct request_queue *q, char *disk_name,
if (ret)
goto err_init;
+ if (dev->ops->max_phys_sect > 256) {
+ pr_info("nvm: max sectors supported is 256.\n");
+ ret = -EINVAL;
+ goto err_init;
+ }
+
if (dev->ops->max_phys_sect > 1) {
dev->ppalist_pool = dev->ops->create_dma_pool(dev->q,
"ppalist");
@@ -316,10 +322,6 @@ int nvm_register(struct request_queue *q, char *disk_name,
ret = -ENOMEM;
goto err_init;
}
- } else if (dev->ops->max_phys_sect > 256) {
- pr_info("nvm: max sectors supported is 256.\n");
- ret = -EINVAL;
- goto err_init;
}
down_write(&nvm_lock);