On Mon, Feb 01, 2021 at 09:26:50PM +0800, Tianjia Zhang wrote: > The spin lock of sgx_epc_section only locks the page_list. The > EREMOVE operation and init_laundry_list is not necessary in the > protection range of the spin lock. This patch reduces the lock > range of the spin lock in the function sgx_sanitize_section() > and only protects the operation of the page_list. > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > Signed-off-by: Tianjia Zhang <tianjia.zhang@xxxxxxxxxxxxxxxxx> I'm not confident that this change has any practical value. /Jarkko > --- > arch/x86/kernel/cpu/sgx/main.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c > index c519fc5f6948..4465912174fd 100644 > --- a/arch/x86/kernel/cpu/sgx/main.c > +++ b/arch/x86/kernel/cpu/sgx/main.c > @@ -41,20 +41,17 @@ static void sgx_sanitize_section(struct sgx_epc_section *section) > if (kthread_should_stop()) > return; > > - /* needed for access to ->page_list: */ > - spin_lock(§ion->lock); > - > page = list_first_entry(§ion->init_laundry_list, > struct sgx_epc_page, list); > > ret = __eremove(sgx_get_epc_virt_addr(page)); > - if (!ret) > + if (!ret) { > + spin_lock(§ion->lock); > list_move(&page->list, §ion->page_list); > - else > + spin_unlock(§ion->lock); > + } else > list_move_tail(&page->list, &dirty); > > - spin_unlock(§ion->lock); > - > cond_resched(); > } > > -- > 2.19.1.3.ge56e4f7 > >