]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cleanup: fix scoped_class()
authorChristian Brauner <brauner@kernel.org>
Sun, 2 Nov 2025 23:12:40 +0000 (00:12 +0100)
committerChristian Brauner <brauner@kernel.org>
Tue, 4 Nov 2025 11:35:49 +0000 (12:35 +0100)
This is a class, not a guard so why on earth is it checking for guard
pointers or conditional lock acquisition? None of it makes any sense at
all.

I'm not sure what happened back then. Maybe I had a brief psychedelic
period that I completely forgot about and spaced out into a zone where
that initial macro implementation made any sense at all.

Link: https://patch.msgid.link/20251103-work-creds-init_cred-v1-1-cb3ec8711a6a@kernel.org
Fixes: 5c21c5f22d07 ("cleanup: add a scoped version of CLASS()")
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christian Brauner <brauner@kernel.org>
include/linux/cleanup.h

index 2573585b7f068abe992af1ac05f478fef7b34306..19c7e475d3a4d9618dd2897256b2f2f211ce5af2 100644 (file)
@@ -290,15 +290,16 @@ static inline class_##_name##_t class_##_name##ext##_constructor(_init_args) \
        class_##_name##_t var __cleanup(class_##_name##_destructor) =   \
                class_##_name##_constructor
 
-#define scoped_class(_name, var, args)                          \
-       for (CLASS(_name, var)(args);                           \
-            __guard_ptr(_name)(&var) || !__is_cond_ptr(_name); \
-            ({ goto _label; }))                                \
-               if (0) {                                        \
-_label:                                                         \
-                       break;                                  \
+#define __scoped_class(_name, var, _label, args...)        \
+       for (CLASS(_name, var)(args); ; ({ goto _label; })) \
+               if (0) {                                   \
+_label:                                                    \
+                       break;                             \
                } else
 
+#define scoped_class(_name, var, args...) \
+       __scoped_class(_name, var, __UNIQUE_ID(label), args)
+
 /*
  * DEFINE_GUARD(name, type, lock, unlock):
  *     trivial wrapper around DEFINE_CLASS() above specifically