Skip to contentSkip to conversation

dm: fix an error code in local_init()

PATCH In review Dan Carpenter 2 participants 2 messages Jul 8, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 dm: fix an error code in local_init()

We return success if we can't allocate a work queue but we should return -ENOMEM. The code was a bit messy so that's why this small bug was introduced and I have cleaned that as well.

drivers/md/dm.c +5 -3
index 3281615..aa2b12e 100644
@@ -263,12 +263,12 @@ EXPORT_SYMBOL_GPL(dm_get_reserved_rq_based_ios);
 
 static int __init local_init(void)
 {
-	int r = -ENOMEM;
+	int r;
 
 	/* allocate a slab for the dm_ios */
 	_io_cache = KMEM_CACHE(dm_io, 0);
 	if (!_io_cache)
-		return r;
+		return -ENOMEM;
 
 	_rq_tio_cache = KMEM_CACHE(dm_rq_target_io, 0);
 	if (!_rq_tio_cache)
@@ -279,8 +279,10 @@ static int __init local_init(void)
 		goto out_free_rq_tio_cache;
 
 	deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1);
-	if (!deferred_remove_workqueue)
+	if (!deferred_remove_workqueue) {
+		r = -ENOMEM;
 		goto out_uevent_exit;
+	}
 
 	_major = major;
 	r = register_blkdev(_major, _name);
#1 lore raw
Quoted 5 lines · Dan Carpenter

We return success if we can't allocate a work queue but we should return -ENOMEM. The code was a bit messy so that's why this small bug was introduced and I have cleaned that as well.

Thanks Dan! I folded your fix into the commit that introduced this bug because that commit was marked for stable and will be sent to Linus shortly. See the new rebased commit here:

https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=for-next&id=58f3fce6ee8c37c1c18f36439102d5cccc5363c8