A lot of code uses the following pattern: * prepare new credentials * modify them for their use-case * drop them
Support that easier with the new guard infrastructure. Signed-off-by: Christian Brauner <[email protected]> --- include/linux/cred.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/cred.h b/include/linux/cred.h index 1778c0535b90..a1e33227e0c2 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -285,6 +285,11 @@ static inline void put_cred(const struct cred *cred) put_cred_many(cred, 1); } +DEFINE_CLASS(prepare_creds, + struct cred *, + if (_T) put_cred(_T), + prepare_creds(), void) + DEFINE_FREE(put_cred, struct cred *, if (!IS_ERR_OR_NULL(_T)) put_cred(_T)) /** -- 2.47.3
