2010-07-30 07:55:52

by Shaohua Li

[permalink] [raw]
Subject: [trival patch]x86: unmap vdso pages are missed

The memory hasn't been unmapped.

Signed-off-by: Shaohua Li <[email protected]>

diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index ac74869..80f23ed 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -67,6 +67,7 @@ static int __init init_vdso_vars(void)
*(typeof(__ ## x) **) var_ref(VDSO64_SYMBOL(vbase, x), #x) = &__ ## x;
#include "vextern.h"
#undef VEXTERN
+ vunmap(vbase);
return 0;

oom:


2010-07-30 17:02:19

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [trival patch]x86: unmap vdso pages are missed

On 07/30/2010 12:55 AM, Shaohua Li wrote:
> The memory hasn't been unmapped.
>
> Signed-off-by: Shaohua Li <[email protected]>

Looks right, but it would be really good if you could provide a more
verbose description about why this is the right thing to do.

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.

2010-08-02 00:49:37

by Shaohua Li

[permalink] [raw]
Subject: Re: [trival patch]x86: unmap vdso pages are missed

On Sat, Jul 31, 2010 at 01:02:02AM +0800, H. Peter Anvin wrote:
> On 07/30/2010 12:55 AM, Shaohua Li wrote:
> > The memory hasn't been unmapped.
> >
> > Signed-off-by: Shaohua Li <[email protected]>
>
> Looks right, but it would be really good if you could provide a more
> verbose description about why this is the right thing to do.

We mapped vdso pages but never unmapped them and the vitrual address is lost after
exitting from the function. So unmap vdso pages here.

Signed-off-by: Shaohua Li <[email protected]>

diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index ac74869..80f23ed 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -67,6 +67,7 @@ static int __init init_vdso_vars(void)
*(typeof(__ ## x) **) var_ref(VDSO64_SYMBOL(vbase, x), #x) = &__ ## x;
#include "vextern.h"
#undef VEXTERN
+ vunmap(vbase);
return 0;

oom:

2010-08-02 23:43:09

by Shaohua Li

[permalink] [raw]
Subject: [tip:x86/vdso] x86, vdso: Unmap vdso pages

Commit-ID: be783a47214afc5a0aea9dafcbd9f1535ba05e94
Gitweb: http://git.kernel.org/tip/be783a47214afc5a0aea9dafcbd9f1535ba05e94
Author: Shaohua Li <[email protected]>
AuthorDate: Mon, 2 Aug 2010 08:49:34 +0800
Committer: H. Peter Anvin <[email protected]>
CommitDate: Mon, 2 Aug 2010 15:11:59 -0700

x86, vdso: Unmap vdso pages

We mapped vdso pages but never unmapped them and the virtual address
is lost after exiting from the function, so unmap vdso pages here.

Signed-off-by: Shaohua Li <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: H. Peter Anvin <[email protected]>
---
arch/x86/vdso/vma.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index ac74869..80f23ed 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -67,6 +67,7 @@ static int __init init_vdso_vars(void)
*(typeof(__ ## x) **) var_ref(VDSO64_SYMBOL(vbase, x), #x) = &__ ## x;
#include "vextern.h"
#undef VEXTERN
+ vunmap(vbase);
return 0;

oom: