]> git.baikalelectronics.ru Git - kernel.git/commit
mm: tiny-shmem nommu fix
authorNick Piggin <npiggin@suse.de>
Thu, 2 Oct 2008 21:50:16 +0000 (14:50 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Oct 2008 22:53:13 +0000 (15:53 -0700)
commitdd05b7c071e615b23d78119d1d3855f829db8a8e
tree3c570060d915cb1e140fbdbbfb4a9efde26a37ff
parent085b8e383ee00c700c98002788378324837c971c
mm: tiny-shmem nommu fix

The previous patch 312540432e58a9217c25fbc30ccc9a7a035ef8fa ("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
include/linux/ramfs.h
mm/tiny-shmem.c