On Sun, Nov 24, 2024 at 02:43:55PM +0100, Christian Brauner wrote: > The creds are allocated via prepare_kernel_cred() which has already > taken a reference. > > Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> > --- > drivers/target/target_core_configfs.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c > index ec7a5598719397da5cadfed12a05ca8eb81e46a9..d102ab79c56dd7977465f7455749e6e7a2c9fba1 100644 > --- a/drivers/target/target_core_configfs.c > +++ b/drivers/target/target_core_configfs.c > @@ -3756,10 +3756,9 @@ static int __init target_core_init_configfs(void) > ret = -ENOMEM; > goto out; > } > - old_cred = override_creds(get_new_cred(kern_cred)); > + old_cred = override_creds(kern_cred); > target_init_dbroot(); > put_cred(revert_creds(old_cred)); > - put_cred(kern_cred); FWIW, I agree with Amir - revert_creds(old_cred); put_cred(kern_cred); might be easier to follow. In effect, you have two scopes here - from prepare_kernel_cred() to put_cred() and, nested in it, from override_creds() to revert_creds(). I'm not saying that __cleanup() is the right tool in those cases, but the closing brackets of those scopes would be better off separated.