On Thu, Jun 25, 2020 at 07:06:48PM +0200, Borislav Petkov wrote: > On Thu, Jun 18, 2020 at 01:08:31AM +0300, Jarkko Sakkinen wrote: > > Add __sgx_alloc_epc_page(), which iterates through EPC sections and borrows > > a page structure that is not used by anyone else. When a page is no longer > > needed it must be released with sgx_free_epc_page(). This function > > implicitly calls ENCLS[EREMOVE], which will return the page to the > > uninitialized state (i.e. not required from caller part). > > > > Acked-by: Jethro Beekman <jethro@xxxxxxxxxxxx> > > Co-developed-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > > Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@xxxxxxxxxxxxxxx> > > --- > > arch/x86/kernel/cpu/sgx/main.c | 61 ++++++++++++++++++++++++++++++++++ > > arch/x86/kernel/cpu/sgx/sgx.h | 3 ++ > > 2 files changed, 64 insertions(+) > > > > diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c > > index c5831e3db14a..b776d249289f 100644 > > --- a/arch/x86/kernel/cpu/sgx/main.c > > +++ b/arch/x86/kernel/cpu/sgx/main.c > > @@ -83,6 +83,67 @@ static bool __init sgx_page_reclaimer_init(void) > > return true; > > } > > > > +static struct sgx_epc_page *__sgx_alloc_epc_page_from_section(struct sgx_epc_section *section) > > +{ > > + struct sgx_epc_page *page; > > + > > + if (list_empty(§ion->page_list)) > > + return NULL; > > + > > + page = list_first_entry(§ion->page_list, struct sgx_epc_page, list); > > + list_del_init(&page->list); > > <---- newline here. > > > + return page; > > +} > > Otherwise looks good; nice comments. Thanks! > > Thx. > > -- > Regards/Gruss, > Boris. > > https://people.kernel.org/tglx/notes-about-netiquette /Jarko