cred: add scoped_with_kernel_creds()

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>
This commit is contained in:
Christian Brauner 2025-11-03 00:12:43 +01:00
parent 40314c2818
commit ae40e6c657
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2
1 changed files with 8 additions and 0 deletions

View 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