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 <dan.carpenter@xxxxxxxxxx> diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 3281615..aa2b12e 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -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); -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel