svn commit: r367695 - in head/sys: kern sys

Mateusz Guzik mjguzik at gmail.com
Wed Nov 18 22:16:38 UTC 2020


On 11/17/20, John Baldwin <jhb at freebsd.org> wrote:
> On 11/14/20 11:22 AM, Mateusz Guzik wrote:
>> Author: mjg
>> Date: Sat Nov 14 19:22:02 2020
>> New Revision: 367695
>> URL: https://svnweb.freebsd.org/changeset/base/367695
>>
>> Log:
>>   thread: batch credential freeing
>>
>> Modified:
>>   head/sys/kern/kern_prot.c
>>   head/sys/kern/kern_thread.c
>>   head/sys/sys/ucred.h
>>
>> Modified: head/sys/kern/kern_prot.c
>> ==============================================================================
>> --- head/sys/kern/kern_prot.c	Sat Nov 14 19:21:46 2020	(r367694)
>> +++ head/sys/kern/kern_prot.c	Sat Nov 14 19:22:02 2020	(r367695)
>> @@ -2007,6 +2071,17 @@ crfree(struct ucred *cr)
>>  		mtx_unlock(&cr->cr_mtx);
>>  		return;
>>  	}
>> +	crfree_final(cr);
>> +}
>> +
>> +static void
>> +crfree_final(struct ucred *cr)
>> +{
>> +
>> +	KASSERT(cr->cr_users == 0, ("%s: users %d not == 0 on cred %p",
>> +	    __func__, cr->cr_users, cr));
>> +	KASSERT(cr->cr_ref == 0, ("%s: ref %d not == 0 on cred %p",
>> +	    __func__, cr->cr_ref, cr));
>>  	/*
>
> Please add blank lines before comments.  It's in style(9) and I've noticed
> a pattern in your changes of not including them.
>

Ok.

>> Modified: head/sys/sys/ucred.h
>> ==============================================================================
>> --- head/sys/sys/ucred.h	Sat Nov 14 19:21:46 2020	(r367694)
>> +++ head/sys/sys/ucred.h	Sat Nov 14 19:22:02 2020	(r367695)
>> @@ -114,6 +114,28 @@ struct xucred {
>>  struct proc;
>>  struct thread;
>>
>> +struct credbatch {
>> +	struct ucred *cred;
>> +	int users;
>> +	int ref;
>> +};
>> +
>> +static inline void
>> +credbatch_prep(struct credbatch *crb)
>> +{
>> +	crb->cred = NULL;
>> +	crb->users = 0;
>> +	crb->ref = 0;
>> +}
>> +void	credbatch_add(struct credbatch *crb, struct thread *td);
>> +static inline void
>> +credbatch_process(struct credbatch *crb)
>> +{
>> +
>> +}
>> +void	credbatch_add(struct credbatch *crb, struct thread *td);
>> +void	credbatch_final(struct credbatch *crb);
>> +
>
> Do not mix prototypes and inlines, especially without spaces
> around the prototype in the middle.  Also, the kernel uses __inline
> rather than inline (for better or for worse).

The kernel has a huge mix of inline and __inline, to the point where
my impression was that __inline is obsolete.

>  Better would be:
>
> static __inline void
> credbatch_prep()
> {
>       ...
> }
>
> static __inline void
> credbatch_process()
> {
>       ...
> }
>
> void credbatch_add();
> void credbatch_final();
>

I disagree. The current header order follows how these routines are used.

> It seems you just have a duplicate credbatch_add() in fact.
>

Indeed, I'll whack it.

> Also, why have an empty inline function?
>

Interested parties can check the consumer (also seen in the diff) to
see this is for consistency. I don't think any comments are warranted
in the header.

> These changes would benefit from review.
>

I don't think it's feasible to ask for review for everything lest it
degardes to rubber stamping and I don't think this change warranted
it, regardless of the cosmetic issues which can always show up.

> --
> John Baldwin
>


-- 
Mateusz Guzik <mjguzik gmail.com>


More information about the svn-src-head mailing list