The patch titled
ramfs: fix memleak on no-mmu arch
has been added to the -mm tree. Its filename is
ramfs-fix-memleak-on-no-mmu-arch.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/SubmitChecklist when testing your code ***
See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
out what to do about this
The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/
------------------------------------------------------
Subject: ramfs: fix memleak on no-mmu arch
From: Bob Liu <[email protected]>
On no-mmu arch, there is a memleak duirng shmem test. The cause of this
memleak is ramfs_nommu_expand_for_mapping() added page refcount to 2 which
makes iput() can't free that pages.
The simple test file is like this:
int main(void)
{
int i;
key_t k = ftok("/etc", 42);
for ( i=0; i<100; ++i) {
int id = shmget(k, 10000, 0644|IPC_CREAT);
if (id == -1) {
printf("shmget error\n");
}
if(shmctl(id, IPC_RMID, NULL ) == -1) {
printf("shm rm error\n");
return -1;
}
}
printf("run ok...\n");
return 0;
}
And the result:
root:/> free
total used free shared buffers
Mem: 60320 16644 43676 0 0
-/+ buffers: 16644 43676
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 17912 42408 0 0
-/+ buffers: 17912 42408
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 19096 41224 0 0
-/+ buffers: 19096 41224
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 20296 40024 0 0
-/+ buffers: 20296 40024
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 21496 38824 0 0
-/+ buffers: 21496 38824
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 22692 37628 0 0
-/+ buffers: 22692 37628
root:/>
After this patch the test result is:(no memleak anymore)
root:/>
root:/> free
total used free shared buffers
Mem: 60320 16580 43740 0 0
-/+ buffers: 16580 43740
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 16668 43652 0 0
-/+ buffers: 16668 43652
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 16668 43652 0 0
-/+ buffers: 16668 43652
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 16668 43652 0 0
-/+ buffers: 16668 43652
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 16668 43652 0 0
-/+ buffers: 16668 43652
root:/> shmem
run ok...
root:/> free
total used free shared buffers
Mem: 60320 16668 43652 0 0
-/+ buffers: 16668 43652
root:/>
Signed-off-by: Bob Liu <[email protected]>
Acked-by: Hugh Dickins <[email protected]>
Signed-off-by: David Howells <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---
fs/ramfs/file-nommu.c | 1 +
1 file changed, 1 insertion(+)
diff -puN fs/ramfs/file-nommu.c~ramfs-fix-memleak-on-no-mmu-arch
fs/ramfs/file-nommu.c
--- a/fs/ramfs/file-nommu.c~ramfs-fix-memleak-on-no-mmu-arch
+++ a/fs/ramfs/file-nommu.c
@@ -112,6 +112,7 @@ int ramfs_nommu_expand_for_mapping(struc
SetPageDirty(page);
unlock_page(page);
+ put_page(page);
}
return 0;
_
Patches currently in -mm which might be from [email protected] are
ramfs-fix-memleak-on-no-mmu-arch.patch
_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable