Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp799399pxb; Wed, 15 Sep 2021 13:33:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwuuC8/Tc2Z4oM1vuqv85uKZibkOrrRcBTbUponeRBMdSZnpX+yDRs5nzLc6xVX5lUh+UZC X-Received: by 2002:a17:907:10c8:: with SMTP id rv8mr2038322ejb.280.1631737998971; Wed, 15 Sep 2021 13:33:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631737998; cv=none; d=google.com; s=arc-20160816; b=SthEuoNyT8Wwd6Ww+511tCMbGWNquNQl6j+VKwiOsL7K+BLozxpV00ArW6W+q/uqLq bQBMKGZSDW03hAhBzAiS652sonuYcq64gywDNFvSJBQEVLAX2myIgPVWaBlIgJvvpVDK AEffNFyqtMftOiwzuOIDe4fC341r4v61SmZpyzvHV0f6IckpgQi1EwWoK2bJ3AnRMLRl lEJ+bP3Z4GRtRv4xBqZk1W2ef+klFbspFoZR4aRET++oDDY2vXNsNum4ccZUhcWB47Zg Zz+HgF3ItXohOzVkQg786JsdEBF49a66yNXRqyfpN4/UHQwaC7FxNKYwghPX2DqYSWo0 Pw9Q== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=DlWZ1pQSaAEI6YPYSfYuZi5bakJsa99YaDeyU+myPJ4=; b=zlk6KHAORO6dnYmhacpYBr4QvLlAh5LWPkasHjz6fL91djFYTvAr6cOEiz2NQsUwJs jwFnFEo0OYv0AhnQ4S32hwTNtAvG67fo08HY/jiAVWYWxO0nsuLyPbVO9+qjy1rJx2oh viJMinx4np7ixVVtO5zCNr/RFqzyKrMOsaHfw3H2lHWixs2M8i73c9CBSknKQQZvhKlP MSv1jNT6xPQ1CnDCXH4riZWJNyhFCN8cQ8izf1TQPXIuNjW1G8GFLH3nW0x3b3pkfFie xlE8z0s/961A1r6JjDgVNIDqkbFdxowJgQIdfuDn9nDR9ny5DYxwPqqDtaM2YOEfv8Om g/Uw== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v17si1074600eds.80.2021.09.15.13.32.55; Wed, 15 Sep 2021 13:33:18 -0700 (PDT) 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232178AbhIOUct (ORCPT + 99 others); Wed, 15 Sep 2021 16:32:49 -0400 Received: from mga07.intel.com ([134.134.136.100]:13812 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231862AbhIOUce (ORCPT ); Wed, 15 Sep 2021 16:32:34 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10108"; a="286109361" X-IronPort-AV: E=Sophos;i="5.85,296,1624345200"; d="scan'208";a="286109361" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2021 13:31:13 -0700 X-IronPort-AV: E=Sophos;i="5.85,296,1624345200"; d="scan'208";a="545092775" Received: from rchatre-ws.ostc.intel.com ([10.54.69.144]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2021 13:31:13 -0700 From: Reinette Chatre To: linux-sgx@vger.kernel.org, jarkko@kernel.org, shuah@kernel.org Cc: seanjc@google.com, bp@alien8.de, dave.hansen@linux.intel.com, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 03/14] selftests/sgx: Assign source for each segment Date: Wed, 15 Sep 2021 13:30:53 -0700 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jarkko Sakkinen Define source per segment so that enclave pages can be added from different sources, e.g. anonymous VMA for zero pages. In other words, add 'src' field to struct encl_segment, and assign it to 'encl->src' for pages inherited from the enclave binary. Signed-off-by: Jarkko Sakkinen Signed-off-by: Reinette Chatre --- tools/testing/selftests/sgx/load.c | 5 +++-- tools/testing/selftests/sgx/main.h | 1 + tools/testing/selftests/sgx/sigstruct.c | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/sgx/load.c b/tools/testing/selftests/sgx/load.c index 3ebe5d1fe337..5605474aab73 100644 --- a/tools/testing/selftests/sgx/load.c +++ b/tools/testing/selftests/sgx/load.c @@ -107,7 +107,7 @@ static bool encl_ioc_add_pages(struct encl *encl, struct encl_segment *seg) memset(&secinfo, 0, sizeof(secinfo)); secinfo.flags = seg->flags; - ioc.src = (uint64_t)encl->src + seg->offset; + ioc.src = (uint64_t)seg->src; ioc.offset = seg->offset; ioc.length = seg->size; ioc.secinfo = (unsigned long)&secinfo; @@ -216,6 +216,7 @@ bool encl_load(const char *path, struct encl *encl) if (j == 0) { src_offset = phdr->p_offset & PAGE_MASK; + encl->src = encl->bin + src_offset; seg->prot = PROT_READ | PROT_WRITE; seg->flags = SGX_PAGE_TYPE_TCS << 8; @@ -228,13 +229,13 @@ bool encl_load(const char *path, struct encl *encl) seg->offset = (phdr->p_offset & PAGE_MASK) - src_offset; seg->size = (phdr->p_filesz + PAGE_SIZE - 1) & PAGE_MASK; + seg->src = encl->src + seg->offset; j++; } assert(j == encl->nr_segments); - encl->src = encl->bin + src_offset; encl->src_size = encl->segment_tbl[j - 1].offset + encl->segment_tbl[j - 1].size; diff --git a/tools/testing/selftests/sgx/main.h b/tools/testing/selftests/sgx/main.h index 68672fd86cf9..452d11dc4889 100644 --- a/tools/testing/selftests/sgx/main.h +++ b/tools/testing/selftests/sgx/main.h @@ -7,6 +7,7 @@ #define MAIN_H struct encl_segment { + void *src; off_t offset; size_t size; unsigned int prot; diff --git a/tools/testing/selftests/sgx/sigstruct.c b/tools/testing/selftests/sgx/sigstruct.c index 92bbc5a15c39..202a96fd81bf 100644 --- a/tools/testing/selftests/sgx/sigstruct.c +++ b/tools/testing/selftests/sgx/sigstruct.c @@ -289,14 +289,14 @@ static bool mrenclave_eextend(EVP_MD_CTX *ctx, uint64_t offset, static bool mrenclave_segment(EVP_MD_CTX *ctx, struct encl *encl, struct encl_segment *seg) { - uint64_t end = seg->offset + seg->size; + uint64_t end = seg->size; uint64_t offset; - for (offset = seg->offset; offset < end; offset += PAGE_SIZE) { - if (!mrenclave_eadd(ctx, offset, seg->flags)) + for (offset = 0; offset < end; offset += PAGE_SIZE) { + if (!mrenclave_eadd(ctx, seg->offset + offset, seg->flags)) return false; - if (!mrenclave_eextend(ctx, offset, encl->src + offset)) + if (!mrenclave_eextend(ctx, seg->offset + offset, seg->src + offset)) return false; } -- 2.25.1