mm: tiny-shmem nommu fix

Previous thread: memory hotplug: missing zone->lock in test_pages_isolated() by Linux Kernel Mailing List on Thursday, October 2, 2008 - 6:59 pm. (1 message)

Next thread: mm: handle initialising compound pages at orders greater than MAX_ORDER by Linux Kernel Mailing List on Thursday, October 2, 2008 - 6:59 pm. (1 message)
From: Linux Kernel Mailing List
Date: Thursday, October 2, 2008 - 6:59 pm

Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4b19de...
Commit:     4b19de6d1cb07c8bcb6778e771f9cfd5bcfdfd3e
Parent:     6c1b7f680dd4f550fa6f91f148cc6fa2c4bd0737
Author:     Nick Piggin <npiggin@suse.de>
AuthorDate: Thu Oct 2 14:50:16 2008 -0700
Committer:  Linus Torvalds <torvalds@linux-foundation.org>
CommitDate: Thu Oct 2 15:53:13 2008 -0700

    mm: tiny-shmem nommu fix
    
    The previous patch db203d53d474aa068984e409d807628f5841da1b ("mm:
    tiny-shmem fix lock ordering: mmap_sem vs i_mutex") to fix the lock
    ordering in tiny-shmem breaks shared anonymous and IPC memory on NOMMU
    architectures because it was using the expanding truncate to signal ramfs
    to allocate a physically contiguous RAM backing the inode (otherwise it is
    unusable for "memory mapping" it to userspace).
    
    However do_truncate is what caused the lock ordering error, due to it
    taking i_mutex.  In this case, we can actually just call ramfs directly to
    allocate memory for the mapping, rather than go via truncate.
    
    Acked-by: David Howells <dhowells@redhat.com>
    Acked-by: Hugh Dickins <hugh@veritas.com>
    Signed-off-by: Nick Piggin <npiggin@suse.de>
    Cc: Matt Mackall <mpm@selenic.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
 fs/ramfs/file-nommu.c |    2 +-
 include/linux/ramfs.h |    1 +
 mm/tiny-shmem.c       |    6 ++++++
 3 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
index 52312ec..5145cb9 100644
--- a/fs/ramfs/file-nommu.c
+++ b/fs/ramfs/file-nommu.c
@@ -58,7 +58,7 @@ const struct inode_operations ramfs_file_inode_operations = {
  * size 0 on the assumption that it's going to be used for an mmap of shared
  * memory
  */
-static int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)
+int ...
Previous thread: memory hotplug: missing zone->lock in test_pages_isolated() by Linux Kernel Mailing List on Thursday, October 2, 2008 - 6:59 pm. (1 message)

Next thread: mm: handle initialising compound pages at orders greater than MAX_ORDER by Linux Kernel Mailing List on Thursday, October 2, 2008 - 6:59 pm. (1 message)