Messages in this thread | | | Date | Fri, 17 Jun 2022 10:49:43 +0200 | From | Greg KH <> | Subject | Re: [PATCH] lib/kobject: Simplify checking of parameters in kobj_ns_type_register. |
| |
On Fri, Jun 17, 2022 at 04:38:32PM +0800, wuchi wrote: > 1. Merge checking of following code: > if (type >= KOBJ_NS_TYPES) > ... > if (type <= KOBJ_NS_TYPE_NONE)
Why?
> 2. Move the checking of parameters out of critical section, there is > no need to check that with spinlock.
Why does it matter?
> > Signed-off-by: wuchi <wuchi.zero@gmail.com> > --- > lib/kobject.c | 14 ++++---------- > 1 file changed, 4 insertions(+), 10 deletions(-) > > diff --git a/lib/kobject.c b/lib/kobject.c > index 5f0e71ab292c..6a8b009682b8 100644 > --- a/lib/kobject.c > +++ b/lib/kobject.c > @@ -996,19 +996,13 @@ static const struct kobj_ns_type_operations *kobj_ns_ops_tbl[KOBJ_NS_TYPES]; > int kobj_ns_type_register(const struct kobj_ns_type_operations *ops) > { > enum kobj_ns_type type = ops->type; > - int error; > - > - spin_lock(&kobj_ns_type_lock); > + int error = -EBUSY; > > - error = -EINVAL; > - if (type >= KOBJ_NS_TYPES) > - goto out; > + if (unlikely(type >= KOBJ_NS_TYPES || type <= KOBJ_NS_TYPE_NONE))
Why add unlikely? Did you measure the performance benifit? If not, please never add likely/unlikely.
> + return -EINVAL; > > - error = -EINVAL; > - if (type <= KOBJ_NS_TYPE_NONE) > - goto out; > + spin_lock(&kobj_ns_type_lock); > > - error = -EBUSY;
How did you test this? What is the benefit?
thanks,
greg k-h
| |