public inbox for linux-sgx@vger.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Cathy Zhang <cathy.zhang@intel.com>
Cc: linux-sgx@vger.kernel.org, x86@kernel.org,
	reinette.chatre@intel.com, dave.hansen@intel.com,
	ashok.raj@intel.com
Subject: Re: [RFC PATCH v3 01/10] x86/sgx: Introduce mechanism to prevent new initializations of EPC pages
Date: Sun, 3 Apr 2022 11:13:41 +0300	[thread overview]
Message-ID: <YklXNQfcaOcZE7GI@kernel.org> (raw)
In-Reply-To: <20220401142409.26215-2-cathy.zhang@intel.com>

On Fri, Apr 01, 2022 at 10:24:00PM +0800, Cathy Zhang wrote:
> diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c
> index b3c2e8d58142..00668e50848d 100644
> --- a/arch/x86/kernel/cpu/sgx/ioctl.c
> +++ b/arch/x86/kernel/cpu/sgx/ioctl.c
> @@ -147,6 +147,7 @@ static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs)
>  static long sgx_ioc_enclave_create(struct sgx_encl *encl, void __user *arg)
>  {
>  	struct sgx_enclave_create create_arg;
> +	int srcu_idx;
>  	void *secs;
>  	int ret;
>  
> @@ -162,9 +163,20 @@ static long sgx_ioc_enclave_create(struct sgx_encl *encl, void __user *arg)
>  
>  	if (copy_from_user(secs, (void __user *)create_arg.src, PAGE_SIZE))
>  		ret = -EFAULT;
> -	else
> +	else {
> +		srcu_idx = srcu_read_lock(&sgx_lock_epc_srcu);
> +		if (sgx_epc_is_locked()) {
> +			srcu_read_unlock(&sgx_lock_epc_srcu, srcu_idx);
> +			ret = -EBUSY;
> +			goto out;
> +		}
> +
>  		ret = sgx_encl_create(encl, secs);
>  
> +		srcu_read_unlock(&sgx_lock_epc_srcu, srcu_idx);
> +	}
> +
> +out:

Nit: I'd rename this as 'err:'. 

>  	kfree(secs);
>  	return ret;
>  }

Please, take advantage of the label you created anyway:

  	if (copy_from_user(secs, (void __user *)create_arg.src, PAGE_SIZE {
  		ret = -EFAULT;
                goto out;
        }

Then fail cases have the exact same rollback procedure, and the code is
easier to read because it is less nested.

BR, Jarkko
 

  reply	other threads:[~2022-04-03  8:12 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-01 14:23 [RFC PATCH v3 00/10] Support microcode updates affecting SGX Cathy Zhang
2022-04-01 14:24 ` [RFC PATCH v3 01/10] x86/sgx: Introduce mechanism to prevent new initializations of EPC pages Cathy Zhang
2022-04-03  8:13   ` Jarkko Sakkinen [this message]
2022-04-06  3:31     ` Zhang, Cathy
2022-04-01 14:24 ` [RFC PATCH v3 02/10] x86/sgx: Provide VA page non-NULL owner Cathy Zhang
2022-04-03  8:29   ` Jarkko Sakkinen
2022-04-01 14:24 ` [RFC PATCH v3 03/10] x86/sgx: Save enclave pointer for VA page Cathy Zhang
2022-04-03 10:08   ` Jarkko Sakkinen
2022-04-06  3:31     ` Zhang, Cathy
2022-04-06  6:33       ` Jarkko Sakkinen
2022-04-01 14:24 ` [RFC PATCH v3 04/10] x86/sgx: Keep record for SGX VA and Guest page type Cathy Zhang
2022-04-03 10:11   ` Jarkko Sakkinen
2022-04-06  3:38     ` Zhang, Cathy
2022-04-01 14:24 ` [RFC PATCH v3 05/10] x86/sgx: Save the size of each EPC section Cathy Zhang
2022-04-03 10:14   ` Jarkko Sakkinen
2022-04-06  4:00     ` Zhang, Cathy
2022-04-06  6:34       ` Jarkko Sakkinen
2022-04-01 14:24 ` [RFC PATCH v3 06/10] x86/sgx: Forced EPC page zapping for EUPDATESVN Cathy Zhang
2022-04-03 10:20   ` Jarkko Sakkinen
2022-04-06  4:21     ` Zhang, Cathy
2022-04-01 14:24 ` [RFC PATCH v3 07/10] x86/sgx: Define error codes for ENCLS[EUPDATESVN] Cathy Zhang
2022-04-01 14:24 ` [RFC PATCH v3 08/10] x86/sgx: Implement ENCLS[EUPDATESVN] Cathy Zhang
2022-04-01 14:24 ` [RFC PATCH v3 09/10] x86/cpu: Call ENCLS[EUPDATESVN] procedure in microcode update Cathy Zhang
2022-04-01 14:29   ` Borislav Petkov
2022-04-02  2:54     ` Zhang, Cathy
2022-04-01 15:42   ` Dave Hansen
2022-04-02  3:02     ` Zhang, Cathy
2022-04-01 14:24 ` [RFC PATCH v3 10/10] x86/sgx: Call ENCLS[EUPDATESVN] during SGX initialization Cathy Zhang

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=YklXNQfcaOcZE7GI@kernel.org \
    --to=jarkko@kernel.org \
    --cc=ashok.raj@intel.com \
    --cc=cathy.zhang@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=linux-sgx@vger.kernel.org \
    --cc=reinette.chatre@intel.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox