NOMMU: Fix SYSV IPC SHM
David Howells [Tue, 31 Jul 2007 07:37:24 +0000 (00:37 -0700)]
Fix the SYSV IPC SHM to work with the changes applied by the new fault handler
patches when CONFIG_MMU=n.

Signed-off-by: David Howells <dhowells@redhat.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

fs/ramfs/file-nommu.c
ipc/shm.c

index cad2b7a..237fe8b 100644 (file)
@@ -295,5 +295,10 @@ unsigned long ramfs_nommu_get_unmapped_area(struct file *file,
  */
 int ramfs_nommu_mmap(struct file *file, struct vm_area_struct *vma)
 {
-       return vma->vm_flags & VM_SHARED ? 0 : -ENOSYS;
+       if (!(vma->vm_flags & VM_SHARED))
+               return -ENOSYS;
+
+       file_accessed(file);
+       vma->vm_ops = &generic_file_vm_ops;
+       return 0;
 }
index d0259e3..d88ac5a 100644 (file)
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -268,7 +268,9 @@ static int shm_mmap(struct file * file, struct vm_area_struct * vma)
        if (ret != 0)
                return ret;
        sfd->vm_ops = vma->vm_ops;
+#ifdef CONFIG_MMU
        BUG_ON(!sfd->vm_ops->fault);
+#endif
        vma->vm_ops = &shm_vm_ops;
        shm_open(vma);