[PATCH 09/26] target_core_configfs: avoid pointless cred reference count bump

Christian Brauner posted 26 patches 1 year, 2 months ago
There is a newer version of this series
[PATCH 09/26] target_core_configfs: avoid pointless cred reference count bump
Posted by Christian Brauner 1 year, 2 months ago
The creds are allocated via prepare_kernel_cred() which has already
taken a reference.

Signed-off-by: Christian Brauner <brauner@kernel.org>
---
 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);
 
 	return 0;
 

-- 
2.45.2
Re: [PATCH 09/26] target_core_configfs: avoid pointless cred reference count bump
Posted by Al Viro 1 year, 2 months ago
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@kernel.org>
> ---
>  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.
Re: [PATCH 09/26] target_core_configfs: avoid pointless cred reference count bump
Posted by Christian Brauner 1 year, 2 months ago
On Sun, Nov 24, 2024 at 06:26:12PM +0000, Al Viro wrote:
> 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@kernel.org>
> > ---
> >  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);

Ok, done.