2007-10-08 15:28:19

by Yan Zheng

[permalink] [raw]
Subject: [PATCH]fix page release issue in filemap_fault

Hi all

find_lock_page increases page's usage count, we should decrease it
before return VM_FAULT_SIGBUS

Signed-off-by: Yan Zheng<[email protected]>
----
diff -ur linux-2.6.23-rc9/mm/filemap.c linux/mm/filemap.c
--- linux-2.6.23-rc9/mm/filemap.c 2007-10-07 15:03:33.000000000 +0800
+++ linux/mm/filemap.c 2007-10-08 23:14:39.000000000 +0800
@@ -1388,6 +1388,7 @@
size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
if (unlikely(vmf->pgoff >= size)) {
unlock_page(page);
+ page_cache_release(page);
goto outside_data_content;
}


2007-10-08 17:15:40

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH]fix page release issue in filemap_fault

On Mon, 2007-10-08 at 23:28 +0800, Yan Zheng wrote:
> Hi all
>
> find_lock_page increases page's usage count, we should decrease it
> before return VM_FAULT_SIGBUS
>
> Signed-off-by: Yan Zheng<[email protected]>

Nice catch, .23 material?

Acked-by: Peter Zijlstra <[email protected]>

> ----
> diff -ur linux-2.6.23-rc9/mm/filemap.c linux/mm/filemap.c
> --- linux-2.6.23-rc9/mm/filemap.c 2007-10-07 15:03:33.000000000 +0800
> +++ linux/mm/filemap.c 2007-10-08 23:14:39.000000000 +0800
> @@ -1388,6 +1388,7 @@
> size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
> if (unlikely(vmf->pgoff >= size)) {
> unlock_page(page);
> + page_cache_release(page);
> goto outside_data_content;
> }

2007-10-08 17:23:46

by Rik van Riel

[permalink] [raw]
Subject: Re: [PATCH]fix page release issue in filemap_fault

On Mon, 08 Oct 2007 19:15:23 +0200
Peter Zijlstra <[email protected]> wrote:
> On Mon, 2007-10-08 at 23:28 +0800, Yan Zheng wrote:
> > Hi all
> >
> > find_lock_page increases page's usage count, we should decrease it
> > before return VM_FAULT_SIGBUS
> >
> > Signed-off-by: Yan Zheng<[email protected]>
>
> Nice catch, .23 material?

An obvious fix for a memory leak. I think it should go in.

> Acked-by: Peter Zijlstra <[email protected]>

Acked-by: Rik van Riel <[email protected]>

--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan