]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
liveupdate: luo_file: Use private list
authorPasha Tatashin <pasha.tatashin@soleen.com>
Thu, 18 Dec 2025 15:57:50 +0000 (10:57 -0500)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 8 Feb 2026 08:13:33 +0000 (00:13 -0800)
Switch LUO to use the private list iterators.

Link: https://lkml.kernel.org/r/20251218155752.3045808-4-pasha.tatashin@soleen.com
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Alexander Graf <graf@amazon.com>
Cc: David Gow <davidgow@google.com>
Cc: David Matlack <dmatlack@google.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Kees Cook <kees@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Pratyush Yadav <pratyush@kernel.org>
Cc: Samiullah Khawaja <skhawaja@google.com>
Cc: Tamir Duberstein <tamird@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/liveupdate/luo_file.c
kernel/liveupdate/luo_internal.h

index a32a777f6df8f3e72578808eaf711a19ef9ab935..1a8a1bb73a581c6d1e479dc02ade13c8943de93e 100644 (file)
 #include <linux/io.h>
 #include <linux/kexec_handover.h>
 #include <linux/kho/abi/luo.h>
+#include <linux/list_private.h>
 #include <linux/liveupdate.h>
 #include <linux/module.h>
 #include <linux/sizes.h>
@@ -273,7 +274,7 @@ int luo_preserve_file(struct luo_file_set *file_set, u64 token, int fd)
                goto  err_fput;
 
        err = -ENOENT;
-       luo_list_for_each_private(fh, &luo_file_handler_list, list) {
+       list_private_for_each_entry(fh, &luo_file_handler_list, list) {
                if (fh->ops->can_preserve(fh, file)) {
                        err = 0;
                        break;
@@ -760,7 +761,7 @@ int luo_file_deserialize(struct luo_file_set *file_set,
                bool handler_found = false;
                struct luo_file *luo_file;
 
-               luo_list_for_each_private(fh, &luo_file_handler_list, list) {
+               list_private_for_each_entry(fh, &luo_file_handler_list, list) {
                        if (!strcmp(fh->compatible, file_ser[i].compatible)) {
                                handler_found = true;
                                break;
@@ -835,7 +836,7 @@ int liveupdate_register_file_handler(struct liveupdate_file_handler *fh)
                return -EBUSY;
 
        /* Check for duplicate compatible strings */
-       luo_list_for_each_private(fh_iter, &luo_file_handler_list, list) {
+       list_private_for_each_entry(fh_iter, &luo_file_handler_list, list) {
                if (!strcmp(fh_iter->compatible, fh->compatible)) {
                        pr_err("File handler registration failed: Compatible string '%s' already registered.\n",
                               fh->compatible);
index c8973b543d1d3361750139dc92defb78ffe706d9..3f1e0c94637eb9525d69c02fe2653835405ed11a 100644 (file)
@@ -40,13 +40,6 @@ static inline int luo_ucmd_respond(struct luo_ucmd *ucmd,
  */
 #define luo_restore_fail(__fmt, ...) panic(__fmt, ##__VA_ARGS__)
 
-/* Mimics list_for_each_entry() but for private list head entries */
-#define luo_list_for_each_private(pos, head, member)                           \
-       for (struct list_head *__iter = (head)->next;                           \
-            __iter != (head) &&                                                \
-            ({ pos = container_of(__iter, typeof(*(pos)), member); 1; });      \
-            __iter = __iter->next)
-
 /**
  * struct luo_file_set - A set of files that belong to the same sessions.
  * @files_list: An ordered list of files associated with this session, it is