aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWenwei Tao <ww.tao0320@gmail.com>2015-11-28 10:49:25 -0500
committerJens Axboe <axboe@fb.com>2015-11-29 16:34:58 -0500
commitd160147b5c96ef5ec842c604ccd79f5f03306677 (patch)
tree2672290a927b3af161f3cc0ab0e276de7d06cefd
parent76e25081b6ae60fb094328dedf900ec15f10a9fd (diff)
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,
308 if (ret) 308 if (ret)
309 goto err_init; 309 goto err_init;
310 310
311 if (dev->ops->max_phys_sect > 256) {
312 pr_info("nvm: max sectors supported is 256.\n");
313 ret = -EINVAL;
314 goto err_init;
315 }
316
311 if (dev->ops->max_phys_sect > 1) { 317 if (dev->ops->max_phys_sect > 1) {
312 dev->ppalist_pool = dev->ops->create_dma_pool(dev->q, 318 dev->ppalist_pool = dev->ops->create_dma_pool(dev->q,
313 "ppalist"); 319 "ppalist");
@@ -316,10 +322,6 @@ int nvm_register(struct request_queue *q, char *disk_name,
316 ret = -ENOMEM; 322 ret = -ENOMEM;
317 goto err_init; 323 goto err_init;
318 } 324 }
319 } else if (dev->ops->max_phys_sect > 256) {
320 pr_info("nvm: max sectors supported is 256.\n");
321 ret = -EINVAL;
322 goto err_init;
323 } 325 }
324 326
325 down_write(&nvm_lock); 327 down_write(&nvm_lock);