Re: [PATCH v5 06/13] lockdep: Implement crossrelease feature

Byungchul Park
2017-02-28T13:28:39Z

On Tue, Feb 28, 2017 at 02:05:13PM +0100, Peter Zijlstra wrote:
> On Wed, Jan 18, 2017 at 10:17:32PM +0900, Byungchul Park wrote:
> > +#define MAX_XHLOCKS_NR 64UL
>
> > +#ifdef CONFIG_LOCKDEP_CROSSRELEASE
> > + if (tsk->xhlocks) {
> > + void *tmp = tsk->xhlocks;
> > + /* Disable crossrelease for current */
> > + tsk->xhlocks = NULL;
> > + vfree(tmp);
> > + }
> > +#endif
>
> > +#ifdef CONFIG_LOCKDEP_CROSSRELEASE
> > + p->xhlock_idx = 0;
> > + p->xhlock_idx_soft = 0;
> > + p->xhlock_idx_hard = 0;
> > + p->xhlock_idx_nmi = 0;
> > + p->xhlocks = vzalloc(sizeof(struct hist_lock) * MAX_XHLOCKS_NR);
>
> I don't think we need vmalloc for this now.

Really? When is a better time to do it?

I think the time creating a task is the best time to initialize it. No?

>
> > + p->work_id = 0;
> > +#endif
>
> > +#ifdef CONFIG_LOCKDEP_CROSSRELEASE
> > + if (p->xhlocks) {
> > + void *tmp = p->xhlocks;
> > + /* Diable crossrelease for current */
> > + p->xhlocks = NULL;
> > + vfree(tmp);
> > + }
> > +#endif
>
> Second instance of the same code, which would suggest using a function
> for this. Also, with a function you can loose the #ifdeffery.

Yes. It looks much better.

Thank you very much.