dm: fix an error code in local_init()
Subsystems (3)
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.
Signed-off-by Dan Carpenter <[email protected]>
drivers/md/dm.c +5 -3
@@ -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);
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.Signed-off-by Dan Carpenter <[email protected]>
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: