]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cred: add scoped_with_kernel_creds()
authorChristian Brauner <brauner@kernel.org>
Sun, 2 Nov 2025 23:12:43 +0000 (00:12 +0100)
committerChristian Brauner <brauner@kernel.org>
Tue, 4 Nov 2025 11:36:07 +0000 (12:36 +0100)
Add a new cleanup class for override creds. We can make use of this in a
bunch of places going forward.

Based on this scoped_with_kernel_creds() that can be used to temporarily
assume kernel credentials for specific tasks such as firmware loading,
or coredump socket connections. At no point will the caller interact
with the kernel credentials directly.

Link: https://patch.msgid.link/20251103-work-creds-init_cred-v1-4-cb3ec8711a6a@kernel.org
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Christian Brauner <brauner@kernel.org>
include/linux/cred.h

index 8ab3718184adf813023a090b6c6c1aa5f63aea7c..be2cd07b174c5e5a603757d85b02141a69cebf54 100644 (file)
@@ -187,6 +187,14 @@ static inline const struct cred *revert_creds(const struct cred *revert_cred)
        return rcu_replace_pointer(current->cred, revert_cred, 1);
 }
 
+DEFINE_CLASS(override_creds,
+            const struct cred *,
+            revert_creds(_T),
+            override_creds(override_cred), const struct cred *override_cred)
+
+#define scoped_with_kernel_creds() \
+       scoped_class(override_creds, __UNIQUE_ID(cred), kernel_cred())
+
 /**
  * get_cred_many - Get references on a set of credentials
  * @cred: The credentials to reference