From: Sami Tolvanen samitolvanen@google.com
mainline inclusion from mainline-v5.12-rc1-dontuse commit 31bf92881714fe9962d43d097b5114a9b4ad0a12 category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I4SIGI CVE: NA
--------------------------------
device_initcall() expects a function of type initcall_t, which returns an integer. Change the signature of sgx_init() to match.
Intel-SIG: commit 31bf92881714 x86/sgx: Fix the return type of sgx_init() Backport for SGX Foundations support
Fixes: e7e0545299d8c ("x86/sgx: Initialize metadata for Enclave Page Cache (EPC) sections") Signed-off-by: Sami Tolvanen samitolvanen@google.com Signed-off-by: Borislav Petkov bp@suse.de Reviewed-by: Darren Kenny darren.kenny@oracle.com Reviewed-by: Jarkko Sakkinen jarkko@kernel.org Link: https://lkml.kernel.org/r/20210113232311.277302-1-samitolvanen@google.com Signed-off-by: Fan Du fan.du@intel.com #openEuler_contributor Signed-off-by: Laibin Qiu qiulaibin@huawei.com Reviewed-by: Bamvor Zhang bamvor.zhang@suse.com Signed-off-by: Zheng Zengkai zhengzengkai@huawei.com --- arch/x86/kernel/cpu/sgx/main.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c index c519fc5f6948..8df81a3ed945 100644 --- a/arch/x86/kernel/cpu/sgx/main.c +++ b/arch/x86/kernel/cpu/sgx/main.c @@ -700,25 +700,27 @@ static bool __init sgx_page_cache_init(void) return true; }
-static void __init sgx_init(void) +static int __init sgx_init(void) { int ret; int i;
if (!cpu_feature_enabled(X86_FEATURE_SGX)) - return; + return -ENODEV;
if (!sgx_page_cache_init()) - return; + return -ENOMEM;
- if (!sgx_page_reclaimer_init()) + if (!sgx_page_reclaimer_init()) { + ret = -ENOMEM; goto err_page_cache; + }
ret = sgx_drv_init(); if (ret) goto err_kthread;
- return; + return 0;
err_kthread: kthread_stop(ksgxd_tsk); @@ -728,6 +730,8 @@ static void __init sgx_init(void) vfree(sgx_epc_sections[i].pages); memunmap(sgx_epc_sections[i].virt_addr); } + + return ret; }
device_initcall(sgx_init);