| From 28c64d8bdccce6f8f404c86e29559809f6cd8631 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 20 Dec 2025 04:49:37 +0100 |
| Subject: dm: replace -EEXIST with -EBUSY |
| |
| From: Daniel Gomez <da.gomez@samsung.com> |
| |
| [ Upstream commit b13ef361d47f09b7aecd18e0383ecc83ff61057e ] |
| |
| The -EEXIST error code is reserved by the module loading infrastructure |
| to indicate that a module is already loaded. When a module's init |
| function returns -EEXIST, userspace tools like kmod interpret this as |
| "module already loaded" and treat the operation as successful, returning |
| 0 to the user even though the module initialization actually failed. |
| |
| This follows the precedent set by commit 54416fd76770 ("netfilter: |
| conntrack: helper: Replace -EEXIST by -EBUSY") which fixed the same |
| issue in nf_conntrack_helper_register(). |
| |
| Affected modules: |
| * dm_cache dm_clone dm_integrity dm_mirror dm_multipath dm_pcache |
| * dm_vdo dm-ps-round-robin dm_historical_service_time dm_io_affinity |
| * dm_queue_length dm_service_time dm_snapshot |
| |
| Signed-off-by: Daniel Gomez <da.gomez@samsung.com> |
| Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/md/dm-exception-store.c | 2 +- |
| drivers/md/dm-log.c | 2 +- |
| drivers/md/dm-path-selector.c | 2 +- |
| drivers/md/dm-target.c | 2 +- |
| 4 files changed, 4 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/md/dm-exception-store.c b/drivers/md/dm-exception-store.c |
| index c3799757bf4a0..88f119a0a2ae0 100644 |
| --- a/drivers/md/dm-exception-store.c |
| +++ b/drivers/md/dm-exception-store.c |
| @@ -116,7 +116,7 @@ int dm_exception_store_type_register(struct dm_exception_store_type *type) |
| if (!__find_exception_store_type(type->name)) |
| list_add(&type->list, &_exception_store_types); |
| else |
| - r = -EEXIST; |
| + r = -EBUSY; |
| spin_unlock(&_lock); |
| |
| return r; |
| diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c |
| index f7f9c2100937b..e215478bcee04 100644 |
| --- a/drivers/md/dm-log.c |
| +++ b/drivers/md/dm-log.c |
| @@ -121,7 +121,7 @@ int dm_dirty_log_type_register(struct dm_dirty_log_type *type) |
| if (!__find_dirty_log_type(type->name)) |
| list_add(&type->list, &_log_types); |
| else |
| - r = -EEXIST; |
| + r = -EBUSY; |
| spin_unlock(&_lock); |
| |
| return r; |
| diff --git a/drivers/md/dm-path-selector.c b/drivers/md/dm-path-selector.c |
| index 3e4cb81ce512c..78f98545ca72d 100644 |
| --- a/drivers/md/dm-path-selector.c |
| +++ b/drivers/md/dm-path-selector.c |
| @@ -107,7 +107,7 @@ int dm_register_path_selector(struct path_selector_type *pst) |
| |
| if (__find_path_selector_type(pst->name)) { |
| kfree(psi); |
| - r = -EEXIST; |
| + r = -EBUSY; |
| } else |
| list_add(&psi->list, &_path_selectors); |
| |
| diff --git a/drivers/md/dm-target.c b/drivers/md/dm-target.c |
| index 27e2992ff2492..4d1f04b40653f 100644 |
| --- a/drivers/md/dm-target.c |
| +++ b/drivers/md/dm-target.c |
| @@ -88,7 +88,7 @@ int dm_register_target(struct target_type *tt) |
| if (__find_target_type(tt->name)) { |
| DMERR("%s: '%s' target already registered", |
| __func__, tt->name); |
| - rv = -EEXIST; |
| + rv = -EBUSY; |
| } else { |
| list_add(&tt->list, &_targets); |
| } |
| -- |
| 2.51.0 |
| |