diff mbox series

[v2] x86/sgx: Add missing xa_destroy() when virtual EPC is destroyed

Message ID 20210616003634.320206-1-kai.huang@intel.com (mailing list archive)
State New, archived
Headers show
Series [v2] x86/sgx: Add missing xa_destroy() when virtual EPC is destroyed | expand

Commit Message

Huang, Kai June 16, 2021, 12:36 a.m. UTC
xa_destroy() needs to be called to destroy virtual EPC's page array
before calling kfree() to free the virtual EPC.  Currently it is not
called.  Add the missing xa_destroy() to fix.

Fixes: 540745ddbc70 ("x86/sgx: Introduce virtual EPC for use by KVM guests")
Tested-by: Yang Zhong <yang.zhong@intel.com>
Acked-by: Dave Hansen <dave.hansen@intel.com>
Signed-off-by: Kai Huang <kai.huang@intel.com>
---
v1->v2:

 - Fixed typo in commit msg
 - Added Dave's Acked-by
---
 arch/x86/kernel/cpu/sgx/virt.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Jarkko Sakkinen June 23, 2021, 1:28 p.m. UTC | #1
On Wed, Jun 16, 2021 at 12:36:34PM +1200, Kai Huang wrote:
> xa_destroy() needs to be called to destroy virtual EPC's page array
> before calling kfree() to free the virtual EPC.  Currently it is not
> called.  Add the missing xa_destroy() to fix.
> 
> Fixes: 540745ddbc70 ("x86/sgx: Introduce virtual EPC for use by KVM guests")
> Tested-by: Yang Zhong <yang.zhong@intel.com>
> Acked-by: Dave Hansen <dave.hansen@intel.com>
> Signed-off-by: Kai Huang <kai.huang@intel.com>


Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>

> ---
> v1->v2:
> 
>  - Fixed typo in commit msg
>  - Added Dave's Acked-by
> ---
>  arch/x86/kernel/cpu/sgx/virt.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
> index 6ad165a5c0cc..64511c4a5200 100644
> --- a/arch/x86/kernel/cpu/sgx/virt.c
> +++ b/arch/x86/kernel/cpu/sgx/virt.c
> @@ -212,6 +212,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file)
>  		list_splice_tail(&secs_pages, &zombie_secs_pages);
>  	mutex_unlock(&zombie_secs_pages_lock);
>  
> +	xa_destroy(&vepc->page_array);
>  	kfree(vepc);
>  
>  	return 0;
> -- 
> 2.31.1
> 
> 

/Jarkko
Huang, Kai June 25, 2021, 1:45 a.m. UTC | #2
On Wed, 2021-06-23 at 16:28 +0300, Jarkko Sakkinen wrote:
> On Wed, Jun 16, 2021 at 12:36:34PM +1200, Kai Huang wrote:
> > xa_destroy() needs to be called to destroy virtual EPC's page array
> > before calling kfree() to free the virtual EPC.  Currently it is not
> > called.  Add the missing xa_destroy() to fix.
> > 
> > Fixes: 540745ddbc70 ("x86/sgx: Introduce virtual EPC for use by KVM guests")
> > Tested-by: Yang Zhong <yang.zhong@intel.com>
> > Acked-by: Dave Hansen <dave.hansen@intel.com>
> > Signed-off-by: Kai Huang <kai.huang@intel.com>
> 
> 
> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>

Thanks Jarkko.

Hi Boris,

Should we consider to get this into 5.13, since it is a fix?

> 
> > ---
> > v1->v2:
> > 
> >  - Fixed typo in commit msg
> >  - Added Dave's Acked-by
> > ---
> >  arch/x86/kernel/cpu/sgx/virt.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
> > index 6ad165a5c0cc..64511c4a5200 100644
> > --- a/arch/x86/kernel/cpu/sgx/virt.c
> > +++ b/arch/x86/kernel/cpu/sgx/virt.c
> > @@ -212,6 +212,7 @@ static int sgx_vepc_release(struct inode *inode, struct file *file)
> >  		list_splice_tail(&secs_pages, &zombie_secs_pages);
> >  	mutex_unlock(&zombie_secs_pages_lock);
> >  
> > +	xa_destroy(&vepc->page_array);
> >  	kfree(vepc);
> >  
> >  	return 0;
> > -- 
> > 2.31.1
> > 
> > 
> 
> /Jarkko
Borislav Petkov June 25, 2021, 8:22 a.m. UTC | #3
On Fri, Jun 25, 2021 at 01:45:35PM +1200, Kai Huang wrote:
> Should we consider to get this into 5.13, since it is a fix?

We have considered it, have queued it, you're on Cc on the tip-bot
notification:

https://lkml.kernel.org/r/162377378414.19906.6678244614782222506.tip-bot2@tip-bot2

In the meantime, that fix landed upstream and will be in 5.13:

4692bc775d21 ("x86/sgx: Add missing xa_destroy() when virtual EPC is destroyed")
Huang, Kai June 25, 2021, 12:04 p.m. UTC | #4
On Fri, 2021-06-25 at 10:22 +0200, Borislav Petkov wrote:
> On Fri, Jun 25, 2021 at 01:45:35PM +1200, Kai Huang wrote:
> > Should we consider to get this into 5.13, since it is a fix?
> 
> We have considered it, have queued it, you're on Cc on the tip-bot
> notification:
> 
> https://lkml.kernel.org/r/162377378414.19906.6678244614782222506.tip-bot2@tip-bot2
> 
> In the meantime, that fix landed upstream and will be in 5.13:
> 
> 4692bc775d21 ("x86/sgx: Add missing xa_destroy() when virtual EPC is destroyed")
> 

Oh sorry I thought the patch would go via x86/sgx branch, and I didn't monitor
the tip-bot2 mail which was moved to my local x86 folder.  Thanks!
Borislav Petkov June 25, 2021, 1:47 p.m. UTC | #5
On Sat, Jun 26, 2021 at 12:04:53AM +1200, Kai Huang wrote:
> Oh sorry I thought the patch would go via x86/sgx branch

We usually send fixes through tip's urgent branches because they go
straight to Linus and not wait for the merge window.

> and I didn't monitor the tip-bot2 mail which was moved to my local x86
> folder.

That's not optimal because those tip-bot notifications are *exactly* for
that - to let the involved parties know that the patch has been queued.
Huang, Kai June 25, 2021, 11:06 p.m. UTC | #6
On Fri, 2021-06-25 at 15:47 +0200, Borislav Petkov wrote:
> On Sat, Jun 26, 2021 at 12:04:53AM +1200, Kai Huang wrote:
> > Oh sorry I thought the patch would go via x86/sgx branch
> 
> We usually send fixes through tip's urgent branches because they go
> straight to Linus and not wait for the merge window.
> 
> > and I didn't monitor the tip-bot2 mail which was moved to my local x86
> > folder.
> 
> That's not optimal because those tip-bot notifications are *exactly* for
> that - to let the involved parties know that the patch has been queued.
> 

Got it. Thanks for remaindering.
diff mbox series

Patch

diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
index 6ad165a5c0cc..64511c4a5200 100644
--- a/arch/x86/kernel/cpu/sgx/virt.c
+++ b/arch/x86/kernel/cpu/sgx/virt.c
@@ -212,6 +212,7 @@  static int sgx_vepc_release(struct inode *inode, struct file *file)
 		list_splice_tail(&secs_pages, &zombie_secs_pages);
 	mutex_unlock(&zombie_secs_pages_lock);
 
+	xa_destroy(&vepc->page_array);
 	kfree(vepc);
 
 	return 0;