Re: [PATCH] x86/sgx: Synchronize encl->srcu in sgx_encl_release().

From: Jarkko Sakkinen
Date: Tue Dec 15 2020 - 01:01:23 EST


On Tue, Dec 15, 2020 at 07:56:01AM +0200, Jarkko Sakkinen wrote:
> On Mon, Dec 14, 2020 at 11:01:32AM -0800, Sean Christopherson wrote:
> > On Fri, Dec 11, 2020, Jarkko Sakkinen wrote:
> > > Each sgx_mmun_notifier_release() starts a grace period, which means that
> >
> > Should be sgx_mmu_notifier_release(), here and in the comment.
>
> Thanks.
>
> > > one extra synchronize_rcu() in sgx_encl_release(). Add it there.
> > >
> > > sgx_release() has the loop that drains the list but with bad luck the
> > > entry is already gone from the list before that loop processes it.
> >
> > Why not include the actual analysis that "proves" the bug? The splat that
> > Haitao reported would also be useful info.
>
> True. I can include a snippet of dmesg to the commit message.
>
> > > Fixes: 1728ab54b4be ("x86/sgx: Add a page reclaimer")
> > > Cc: Borislav Petkov <bp@xxxxxxxxx>
> > > Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
> > > Reported-by: Sean Christopherson <seanjc@xxxxxxxxxx>
> >
> > Haitao reported the bug, and for all intents and purposes provided the fix. I
> > just did the analysis to verify that there was a legitimate bug and that the
> > synchronization in sgx_encl_release() was indeed necessary.
>
> Good and valid point. The way I see it, the tags should be:
>
> Reported-by: Haitao Huang <haitao.huang@xxxxxxxxxxxxxxx>
> Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx>
>
> Haitao pointed out the bug but from your analysis I could resolve that
> this is the fix to implement, and was able to write the long
> description for the commit.
>
> Does this make sense to you?

I'm sending v2 next week (this week on vacation).

/Jarkko