From: Pasha Tatashin <pasha.tatashin@soleen.com>
To: rppt@kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, pasha.tatashin@soleen.com,
dmatlack@google.com, pratyush@kernel.org, skhawaja@google.com
Subject: [PATCH v4 09/11] liveupdate: Make unregister functions return void
Date: Mon, 13 Apr 2026 18:51:25 +0000 [thread overview]
Message-ID: <20260413185127.128180-10-pasha.tatashin@soleen.com> (raw)
In-Reply-To: <20260413185127.128180-1-pasha.tatashin@soleen.com>
Change liveupdate_unregister_file_handler and liveupdate_unregister_flb
to return void instead of an error code. This follows the design
principle that unregistration during module unload should not fail,
as the unload cannot be stopped at that point.
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Reviewed-by: Pratyush Yadav (Google) <pratyush@kernel.org>
---
include/linux/liveupdate.h | 14 ++++++--------
kernel/liveupdate/luo_file.c | 14 ++------------
kernel/liveupdate/luo_flb.c | 11 +++--------
3 files changed, 11 insertions(+), 28 deletions(-)
diff --git a/include/linux/liveupdate.h b/include/linux/liveupdate.h
index 9c761d9bacf8..30c5a39ff9e9 100644
--- a/include/linux/liveupdate.h
+++ b/include/linux/liveupdate.h
@@ -231,12 +231,12 @@ bool liveupdate_enabled(void);
int liveupdate_reboot(void);
int liveupdate_register_file_handler(struct liveupdate_file_handler *fh);
-int liveupdate_unregister_file_handler(struct liveupdate_file_handler *fh);
+void liveupdate_unregister_file_handler(struct liveupdate_file_handler *fh);
int liveupdate_register_flb(struct liveupdate_file_handler *fh,
struct liveupdate_flb *flb);
-int liveupdate_unregister_flb(struct liveupdate_file_handler *fh,
- struct liveupdate_flb *flb);
+void liveupdate_unregister_flb(struct liveupdate_file_handler *fh,
+ struct liveupdate_flb *flb);
int liveupdate_flb_get_incoming(struct liveupdate_flb *flb, void **objp);
int liveupdate_flb_get_outgoing(struct liveupdate_flb *flb, void **objp);
@@ -258,9 +258,8 @@ static inline int liveupdate_register_file_handler(struct liveupdate_file_handle
return -EOPNOTSUPP;
}
-static inline int liveupdate_unregister_file_handler(struct liveupdate_file_handler *fh)
+static inline void liveupdate_unregister_file_handler(struct liveupdate_file_handler *fh)
{
- return -EOPNOTSUPP;
}
static inline int liveupdate_register_flb(struct liveupdate_file_handler *fh,
@@ -269,10 +268,9 @@ static inline int liveupdate_register_flb(struct liveupdate_file_handler *fh,
return -EOPNOTSUPP;
}
-static inline int liveupdate_unregister_flb(struct liveupdate_file_handler *fh,
- struct liveupdate_flb *flb)
+static inline void liveupdate_unregister_flb(struct liveupdate_file_handler *fh,
+ struct liveupdate_flb *flb)
{
- return -EOPNOTSUPP;
}
static inline int liveupdate_flb_get_incoming(struct liveupdate_flb *flb,
diff --git a/kernel/liveupdate/luo_file.c b/kernel/liveupdate/luo_file.c
index f3b7bb698d3b..f8e098858c62 100644
--- a/kernel/liveupdate/luo_file.c
+++ b/kernel/liveupdate/luo_file.c
@@ -915,25 +915,15 @@ int liveupdate_register_file_handler(struct liveupdate_file_handler *fh)
*
* Unregisters the file handler from the liveupdate core. This function
* reverses the operations of liveupdate_register_file_handler().
- *
- * It ensures safe removal by checking that:
- * No FLB registered with this file handler.
- *
- * If the unregistration fails, the internal test state is reverted.
- *
- * Return: 0 Success. -EOPNOTSUPP when live update is not enabled. -EBUSY A live
- * update is in progress, FLB is registred with this file handler.
*/
-int liveupdate_unregister_file_handler(struct liveupdate_file_handler *fh)
+void liveupdate_unregister_file_handler(struct liveupdate_file_handler *fh)
{
if (!liveupdate_enabled())
- return -EOPNOTSUPP;
+ return;
guard(rwsem_write)(&luo_register_rwlock);
luo_flb_unregister_all(fh);
list_del(&ACCESS_PRIVATE(fh, list));
module_put(fh->ops->owner);
-
- return 0;
}
diff --git a/kernel/liveupdate/luo_flb.c b/kernel/liveupdate/luo_flb.c
index b9f5d452a998..42c37b3c2101 100644
--- a/kernel/liveupdate/luo_flb.c
+++ b/kernel/liveupdate/luo_flb.c
@@ -476,21 +476,16 @@ int liveupdate_register_flb(struct liveupdate_file_handler *fh,
* owner module (acquired during registration) is released.
*
* Context: It is typically called from a subsystem's module exit function.
- * Return: 0 on success.
- * -EOPNOTSUPP if live update is disabled.
- * -ENOENT if the FLB was not found in the file handler's list.
*/
-int liveupdate_unregister_flb(struct liveupdate_file_handler *fh,
- struct liveupdate_flb *flb)
+void liveupdate_unregister_flb(struct liveupdate_file_handler *fh,
+ struct liveupdate_flb *flb)
{
if (!liveupdate_enabled())
- return -EOPNOTSUPP;
+ return;
guard(rwsem_write)(&luo_register_rwlock);
luo_flb_unregister_one(fh, flb);
-
- return 0;
}
/**
--
2.43.0
next prev parent reply other threads:[~2026-04-13 18:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-13 18:51 [PATCH v4 00/11] liveupdate: Fix module unloading and unregister API Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 01/11] liveupdate: Safely print untrusted strings Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 02/11] liveupdate: Synchronize lazy initialization of FLB private state Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 03/11] liveupdate: Protect file handler list with rwsem Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 04/11] liveupdate: Protect FLB lists with luo_register_rwlock Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 05/11] liveupdate: Defer FLB module refcounting to active sessions Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 06/11] liveupdate: Remove luo_session_quiesce() Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 07/11] liveupdate: Auto unregister FLBs on file handler unregistration Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 08/11] liveupdate: Remove liveupdate_test_unregister() Pasha Tatashin
2026-04-13 18:51 ` Pasha Tatashin [this message]
2026-04-13 18:51 ` [PATCH v4 10/11] liveupdate: Defer file handler module refcounting to active sessions Pasha Tatashin
2026-04-13 18:51 ` [PATCH v4 11/11] liveupdate: fix return value on session allocation failure Pasha Tatashin
2026-04-14 9:35 ` Pratyush Yadav
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260413185127.128180-10-pasha.tatashin@soleen.com \
--to=pasha.tatashin@soleen.com \
--cc=akpm@linux-foundation.org \
--cc=dmatlack@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pratyush@kernel.org \
--cc=rppt@kernel.org \
--cc=skhawaja@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox