Re: [PATCH V2] x86/sgx: Fix free page accounting

From: Dave Hansen
Date: Wed Nov 10 2021 - 23:01:44 EST


On 11/10/21 7:50 PM, Jarkko Sakkinen wrote:
>>               CPU_A                                 CPU_B
>>               -----                                 -----
>>          spin_lock(&nodeA->lock);              spin_lock(&nodeB->lock);
>>          ...                                   ...
>>          sgx_nr_free_pages--;  /* NOT SAFE */  sgx_nr_free_pages--;
>>
>>          spin_unlock(&nodeA->lock);            spin_unlock(&nodeB->lock);
>>
>> Maybe you missed the "NOT SAFE" hidden in the middle of
>> the picture?
>>
>> -Tony
> For me from that the ordering is not clear. E.g. compare to
> https://www.kernel.org/doc/Documentation/memory-barriers.txt

Jarkko,

Reinette's explanation looks great to me. Something "protected" by two
different locks is not protected at all. I don't think we need to fret
over this too much.

We don't need memory barriers or anything fancy at all to explain this.