All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Kristen Carlson Accardi <kristen@linux.intel.com>
Cc: linux-kernel@vger.kernel.org,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	linux-sgx@vger.kernel.org
Subject: Re: [PATCH] x86/sgx: Improve comments for sgx_encl_lookup/alloc_backing()
Date: Thu, 28 Jul 2022 10:58:06 +0300	[thread overview]
Message-ID: <YuJBjq/4dALm//rf@kernel.org> (raw)
In-Reply-To: <20220720182120.1160956-1-kristen@linux.intel.com>

On Wed, Jul 20, 2022 at 11:21:19AM -0700, Kristen Carlson Accardi wrote:
> Modify the comments for sgx_encl_lookup_backing() and for
> sgx_encl_alloc_backing() to indicate that they take a reference
> which must be dropped with a call to sgx_encl_put_backing().
> Make sgx_encl_lookup_backing() static for now, and change the
> name of sgx_encl_get_backing() to __sgx_encl_get_backing() to
> make it more clear that sgx_encl_get_backing() is an internal
> function.
> 
> Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>

The rename is unnecessary.

> ---
>  arch/x86/kernel/cpu/sgx/encl.c | 21 ++++++++++++++-------
>  arch/x86/kernel/cpu/sgx/encl.h |  2 --
>  2 files changed, 14 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/sgx/encl.c b/arch/x86/kernel/cpu/sgx/encl.c
> index 19876ebfb504..325c2d59e6b4 100644
> --- a/arch/x86/kernel/cpu/sgx/encl.c
> +++ b/arch/x86/kernel/cpu/sgx/encl.c
> @@ -12,6 +12,9 @@
>  #include "encls.h"
>  #include "sgx.h"
>  
> +static int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index,
> +			    struct sgx_backing *backing);
> +
>  #define PCMDS_PER_PAGE (PAGE_SIZE / sizeof(struct sgx_pcmd))
>  /*
>   * 32 PCMD entries share a PCMD page. PCMD_FIRST_MASK is used to
> @@ -706,7 +709,7 @@ static struct page *sgx_encl_get_backing_page(struct sgx_encl *encl,
>  }
>  
>  /**
> - * sgx_encl_get_backing() - Pin the backing storage
> + * __sgx_encl_get_backing() - Pin the backing storage
>   * @encl:	an enclave pointer
>   * @page_index:	enclave page index
>   * @backing:	data for accessing backing storage for the page
> @@ -718,7 +721,7 @@ static struct page *sgx_encl_get_backing_page(struct sgx_encl *encl,
>   *   0 on success,
>   *   -errno otherwise.
>   */
> -static int sgx_encl_get_backing(struct sgx_encl *encl, unsigned long page_index,
> +static int __sgx_encl_get_backing(struct sgx_encl *encl, unsigned long page_index,
>  			 struct sgx_backing *backing)
>  {
>  	pgoff_t page_pcmd_off = sgx_encl_get_backing_page_pcmd_offset(encl, page_index);
> @@ -794,7 +797,7 @@ static struct mem_cgroup *sgx_encl_get_mem_cgroup(struct sgx_encl *encl)
>  }
>  
>  /**
> - * sgx_encl_alloc_backing() - allocate a new backing storage page
> + * sgx_encl_alloc_backing() - create a new backing storage page
>   * @encl:	an enclave pointer
>   * @page_index:	enclave page index
>   * @backing:	data for accessing backing storage for the page
> @@ -802,7 +805,9 @@ static struct mem_cgroup *sgx_encl_get_mem_cgroup(struct sgx_encl *encl)
>   * When called from ksgxd, sets the active memcg from one of the
>   * mms in the enclave's mm_list prior to any backing page allocation,
>   * in order to ensure that shmem page allocations are charged to the
> - * enclave.
> + * enclave.  Create a backing page for loading data back into an EPC page with
> + * ELDU.  This function takes a reference on a new backing page which
> + * must be dropped with a corresponding call to sgx_encl_put_backing().
>   *
>   * Return:
>   *   0 on success,
> @@ -815,7 +820,7 @@ int sgx_encl_alloc_backing(struct sgx_encl *encl, unsigned long page_index,
>  	struct mem_cgroup *memcg = set_active_memcg(encl_memcg);
>  	int ret;
>  
> -	ret = sgx_encl_get_backing(encl, page_index, backing);
> +	ret = __sgx_encl_get_backing(encl, page_index, backing);
>  
>  	set_active_memcg(memcg);
>  	mem_cgroup_put(encl_memcg);
> @@ -833,15 +838,17 @@ int sgx_encl_alloc_backing(struct sgx_encl *encl, unsigned long page_index,
>   * It is the caller's responsibility to ensure that it is appropriate to use
>   * sgx_encl_lookup_backing() rather than sgx_encl_alloc_backing(). If lookup is
>   * not used correctly, this will cause an allocation which is not accounted for.
> + * This function takes a reference on an existing backing page which must be
> + * dropped with a corresponding call to sgx_encl_put_backing().
>   *
>   * Return:
>   *   0 on success,
>   *   -errno otherwise.
>   */
> -int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index,
> +static int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index,
>  			   struct sgx_backing *backing)
>  {
> -	return sgx_encl_get_backing(encl, page_index, backing);
> +	return __sgx_encl_get_backing(encl, page_index, backing);
>  }
>  
>  /**
> diff --git a/arch/x86/kernel/cpu/sgx/encl.h b/arch/x86/kernel/cpu/sgx/encl.h
> index 332ef3568267..d731ef53f815 100644
> --- a/arch/x86/kernel/cpu/sgx/encl.h
> +++ b/arch/x86/kernel/cpu/sgx/encl.h
> @@ -106,8 +106,6 @@ int sgx_encl_may_map(struct sgx_encl *encl, unsigned long start,
>  bool current_is_ksgxd(void);
>  void sgx_encl_release(struct kref *ref);
>  int sgx_encl_mm_add(struct sgx_encl *encl, struct mm_struct *mm);
> -int sgx_encl_lookup_backing(struct sgx_encl *encl, unsigned long page_index,
> -			    struct sgx_backing *backing);
>  int sgx_encl_alloc_backing(struct sgx_encl *encl, unsigned long page_index,
>  			   struct sgx_backing *backing);
>  void sgx_encl_put_backing(struct sgx_backing *backing);
> -- 
> 2.36.1
> 

BR, JArkko

  reply	other threads:[~2022-07-28  7:58 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20 18:21 [PATCH] x86/sgx: Improve comments for sgx_encl_lookup/alloc_backing() Kristen Carlson Accardi
2022-07-28  7:58 ` Jarkko Sakkinen [this message]
2022-07-28 13:47   ` Dave Hansen
2022-08-01 16:40     ` Jarkko Sakkinen
2022-08-01 16:41       ` Jarkko Sakkinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YuJBjq/4dALm//rf@kernel.org \
    --to=jarkko@kernel.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=kristen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sgx@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.