Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1995439pxb; Mon, 18 Jan 2021 05:42:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJzJH1uWn0pUf2JtDXeNQU76qBRQ89d5ez24Mikyk1GCAARJsTnFovUF6U605LJwC1wzLHRB X-Received: by 2002:a17:907:b01:: with SMTP id h1mr17022486ejl.450.1610977344433; Mon, 18 Jan 2021 05:42:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610977344; cv=none; d=google.com; s=arc-20160816; b=gyI4kS+eARKIp31SUTWlTKAuwSZJ/2GYQaICt2u755nXAR9MwmVfepAmxaYyXSK3gR vZuYnOqwKvd4rKFtSdfks39FpnAjlXUKNkmy4lfFti8bxNfXi1IakGAMuhRNH42rmvwm ttLmn6MwnDF7xE/Vk4/UAxpUuDN7Vcko38pAG79fobysIMDoNIOQCwuhSmormsT5rVjI UQJTyNviPXDbv1E6+Zep9KO4u6z7MoaTDb/Z9q2AugymFkPJoBBYiI7OVWXM4Z2ANvew 2WO9DEiqD1w2OAHA9fsJu4osJG5S5HB52JCssf8WrzExnonYl9IJpCS9Q4BFnMG8OWKU A7jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=D2xZFMVBApzyPeOsqhuD7htW2v9s2ubFZKI0Yg6FPj8=; b=srUsseStthLdpUS3vXuxPtLSEM6PN7xWMSLarb4HnsT9IWyiMhdZRGeO1lr9B8G/M8 UnIqGo02t3DRyHR+fje+aoHcwFdcBPHyg08+MP6QexTfxfV7czqeqfmmBHnyX7Tcv7mV dax6Yds2fiYqwH/aKm9Ri9dXIMRyZ1SxYnSkHduKLXR/Ngg7EXmrORfYZ5T0z0sKieLB bBqQF/yv7V1rR+O+rJsdt3cOIyxMXNv5TMHxIEynQxZU9/TprfDIl5nYBQTqydvQi3hI 3adftIwliGb+Aa5jwz+QRm0IN2w5neMLt2rzXd+px0mzt/aNzXXLD8VoVN+jsAiAgfeU kXvQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a20si372104ejv.169.2021.01.18.05.41.55; Mon, 18 Jan 2021 05:42:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404587AbhARNid (ORCPT + 99 others); Mon, 18 Jan 2021 08:38:33 -0500 Received: from out30-130.freemail.mail.aliyun.com ([115.124.30.130]:43250 "EHLO out30-130.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392294AbhARNfH (ORCPT ); Mon, 18 Jan 2021 08:35:07 -0500 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R731e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e01424;MF=tianjia.zhang@linux.alibaba.com;NM=1;PH=DS;RN=16;SR=0;TI=SMTPD_---0UM8ExNr_1610976828; Received: from localhost(mailfrom:tianjia.zhang@linux.alibaba.com fp:SMTPD_---0UM8ExNr_1610976828) by smtp.aliyun-inc.com(127.0.0.1); Mon, 18 Jan 2021 21:33:48 +0800 From: Tianjia Zhang To: Jarkko Sakkinen , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Andrew Morton , Shuah Khan , haitao.huang@intel.com, Kai Huang , x86@kernel.org, linux-sgx@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Jia Zhang Cc: Tianjia Zhang Subject: [PATCH] x86/sgx: Fix free_cnt counting logic in epc section Date: Mon, 18 Jan 2021 21:33:47 +0800 Message-Id: <20210118133347.99158-1-tianjia.zhang@linux.alibaba.com> X-Mailer: git-send-email 2.19.1.3.ge56e4f7 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Increase `section->free_cnt` in sgx_sanitize_section() is more reasonable, which is called in ksgxd kernel thread, instead of assigning it to epc section pages number at initialization. Although this is unlikely to fail, these pages cannot be allocated after initialization, and which need to be reset by ksgxd. Reported-by: Jia Zhang Signed-off-by: Tianjia Zhang --- arch/x86/kernel/cpu/sgx/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/sgx/main.c b/arch/x86/kernel/cpu/sgx/main.c index c519fc5f6948..9e9a3cf7c00b 100644 --- a/arch/x86/kernel/cpu/sgx/main.c +++ b/arch/x86/kernel/cpu/sgx/main.c @@ -48,9 +48,10 @@ static void sgx_sanitize_section(struct sgx_epc_section *section) struct sgx_epc_page, list); ret = __eremove(sgx_get_epc_virt_addr(page)); - if (!ret) + if (!ret) { list_move(&page->list, §ion->page_list); - else + section->free_cnt += 1; + } else list_move_tail(&page->list, &dirty); spin_unlock(§ion->lock); @@ -646,7 +647,6 @@ static bool __init sgx_setup_epc_section(u64 phys_addr, u64 size, list_add_tail(§ion->pages[i].list, §ion->init_laundry_list); } - section->free_cnt = nr_pages; return true; } -- 2.19.1.3.ge56e4f7