From patchwork Thu Oct 10 23:21:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 11184557 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4E3B5112B for ; Thu, 10 Oct 2019 23:21:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 375732190F for ; Thu, 10 Oct 2019 23:21:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726788AbfJJXVJ (ORCPT ); Thu, 10 Oct 2019 19:21:09 -0400 Received: from mga07.intel.com ([134.134.136.100]:34955 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726135AbfJJXVJ (ORCPT ); Thu, 10 Oct 2019 19:21:09 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Oct 2019 16:21:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,281,1566889200"; d="scan'208";a="207300621" Received: from sjchrist-coffee.jf.intel.com ([10.54.74.41]) by fmsmga001.fm.intel.com with ESMTP; 10 Oct 2019 16:21:09 -0700 From: Sean Christopherson To: Jarkko Sakkinen Cc: linux-sgx@vger.kernel.org Subject: [PATCH for_v23 v2 1/9] x86/sgx: WARN once if an enclave is released with unfreed EPC pages Date: Thu, 10 Oct 2019 16:21:00 -0700 Message-Id: <20191010232108.27075-2-sean.j.christopherson@intel.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20191010232108.27075-1-sean.j.christopherson@intel.com> References: <20191010232108.27075-1-sean.j.christopherson@intel.com> MIME-Version: 1.0 Sender: linux-sgx-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sgx@vger.kernel.org Add a WARN to detect EPC page leaks when releasing an enclave. The release flow uses the common sgx_encl_destroy() helper, which is allowed to be called while the reclaimer holds references to the enclave's EPC pages and so can't WARN in the scenario where the SECS is leaked because it has active child pages. Signed-off-by: Sean Christopherson --- arch/x86/kernel/cpu/sgx/encl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/kernel/cpu/sgx/encl.c b/arch/x86/kernel/cpu/sgx/encl.c index c13c3ba3430a..b4d7b2f9609f 100644 --- a/arch/x86/kernel/cpu/sgx/encl.c +++ b/arch/x86/kernel/cpu/sgx/encl.c @@ -511,6 +511,7 @@ void sgx_encl_release(struct kref *ref) fput(encl->backing); WARN_ONCE(!list_empty(&encl->mm_list), "mm_list non-empty"); + WARN_ON_ONCE(encl->secs_child_cnt || encl->secs.epc_page); kfree(encl); }