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;
}
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;
> }
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