Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1335541 > unrolled thread
| Started by | Toshi Kani <toshi.kani@hpe.com> |
|---|---|
| First post | 2016-02-16 16:40 +0100 |
| Last post | 2016-02-17 01:50 +0100 |
| Articles | 4 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] devm_memremap_release: fix memremap'd addr handling Toshi Kani <toshi.kani@hpe.com> - 2016-02-16 16:40 +0100
Re: [PATCH] devm_memremap_release: fix memremap'd addr handling Andrew Morton <akpm@linux-foundation.org> - 2016-02-17 01:20 +0100
Re: [PATCH] devm_memremap_release: fix memremap'd addr handling Toshi Kani <toshi.kani@hpe.com> - 2016-02-17 01:30 +0100
Re: [PATCH] devm_memremap_release: fix memremap'd addr handling Dan Williams <dan.j.williams@intel.com> - 2016-02-17 01:50 +0100
| From | Toshi Kani <toshi.kani@hpe.com> |
|---|---|
| Date | 2016-02-16 16:40 +0100 |
| Subject | [PATCH] devm_memremap_release: fix memremap'd addr handling |
| Message-ID | <r2PTl-1fi-33@gated-at.bofh.it> |
The pmem driver calls devm_memremap() to map a persistent memory
range. When the pmem driver is unloaded, this memremap'd range
is not released.
Fix devm_memremap_release() to handle a given memremap'd address
properly.
Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
kernel/memremap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/memremap.c b/kernel/memremap.c
index 2c468de..7a1b5c3 100644
--- a/kernel/memremap.c
+++ b/kernel/memremap.c
@@ -114,7 +114,7 @@ EXPORT_SYMBOL(memunmap);
static void devm_memremap_release(struct device *dev, void *res)
{
- memunmap(res);
+ memunmap(*(void **)res);
}
static int devm_memremap_match(struct device *dev, void *res, void *match_data)
[toc] | [next] | [standalone]
| From | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| Date | 2016-02-17 01:20 +0100 |
| Message-ID | <r2Y0y-6P7-19@gated-at.bofh.it> |
| In reply to | #1335541 |
On Tue, 16 Feb 2016 09:30:27 -0700 Toshi Kani <toshi.kani@hpe.com> wrote:
> The pmem driver calls devm_memremap() to map a persistent memory
> range. When the pmem driver is unloaded, this memremap'd range
> is not released.
>
> Fix devm_memremap_release() to handle a given memremap'd address
> properly.
>
> ...
>
> --- a/kernel/memremap.c
> +++ b/kernel/memremap.c
> @@ -114,7 +114,7 @@ EXPORT_SYMBOL(memunmap);
>
> static void devm_memremap_release(struct device *dev, void *res)
> {
> - memunmap(res);
> + memunmap(*(void **)res);
> }
>
Huh. So what happens? memunmap() decides it isn't a vmalloc address
and we leak a vma?
I'll add a cc:stable to this.
[toc] | [prev] | [next] | [standalone]
| From | Toshi Kani <toshi.kani@hpe.com> |
|---|---|
| Date | 2016-02-17 01:30 +0100 |
| Message-ID | <r2Yae-6Sl-7@gated-at.bofh.it> |
| In reply to | #1335948 |
On Tue, 2016-02-16 at 16:18 -0800, Andrew Morton wrote:
> On Tue, 16 Feb 2016 09:30:27 -0700 Toshi Kani <toshi.kani@hpe.com> wrote:
>
> > The pmem driver calls devm_memremap() to map a persistent memory
> > range. When the pmem driver is unloaded, this memremap'd range
> > is not released.
> >
> > Fix devm_memremap_release() to handle a given memremap'd address
> > properly.
> >
> > ...
> >
> > --- a/kernel/memremap.c
> > +++ b/kernel/memremap.c
> > @@ -114,7 +114,7 @@ EXPORT_SYMBOL(memunmap);
> >
> > static void devm_memremap_release(struct device *dev, void *res)
> > {
> > - memunmap(res);
> > + memunmap(*(void **)res);
> > }
> >
>
> Huh. So what happens? memunmap() decides it isn't a vmalloc address
> and we leak a vma?
Yes, that's right.
> I'll add a cc:stable to this.
Agreed.
Thanks!
-Toshi
[toc] | [prev] | [next] | [standalone]
| From | Dan Williams <dan.j.williams@intel.com> |
|---|---|
| Date | 2016-02-17 01:50 +0100 |
| Message-ID | <r2YtA-70p-9@gated-at.bofh.it> |
| In reply to | #1335541 |
On Tue, Feb 16, 2016 at 8:30 AM, Toshi Kani <toshi.kani@hpe.com> wrote:
> The pmem driver calls devm_memremap() to map a persistent memory
> range. When the pmem driver is unloaded, this memremap'd range
> is not released.
>
> Fix devm_memremap_release() to handle a given memremap'd address
> properly.
>
> Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> ---
> kernel/memremap.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/memremap.c b/kernel/memremap.c
> index 2c468de..7a1b5c3 100644
> --- a/kernel/memremap.c
> +++ b/kernel/memremap.c
> @@ -114,7 +114,7 @@ EXPORT_SYMBOL(memunmap);
>
> static void devm_memremap_release(struct device *dev, void *res)
> {
> - memunmap(res);
> + memunmap(*(void **)res);
> }
Ugh, yup. Thanks Toshi!
Acked-by: Dan Williams <dan.j.williams@intel.com>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web