lkml.org 
[lkml]   [2008]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] mm: tiny-shmem fix lor, mmap_sem vs i_mutex
On Tue, 23 Sep 2008, Nick Piggin wrote:
>
> RFC Quick patch to fix nommu anonymous shared memory without breaking
> locking...

Looks good to me, thanks Nick.
And I see David's Ack that it works, so
Acked-by: Hugh Dickins <hugh@veritas.com>

Please push to Andrew and/or Linus now git is broken for !MMU.

Hugh

> ---
>
> Index: linux-2.6/include/linux/ramfs.h
> ===================================================================
> --- linux-2.6.orig/include/linux/ramfs.h
> +++ linux-2.6/include/linux/ramfs.h
> @@ -6,6 +6,7 @@ extern int ramfs_get_sb(struct file_syst
> int flags, const char *dev_name, void *data, struct vfsmount *mnt);
>
> #ifndef CONFIG_MMU
> +extern int ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize);
> extern unsigned long ramfs_nommu_get_unmapped_area(struct file *file,
> unsigned long addr,
> unsigned long len,
> Index: linux-2.6/mm/tiny-shmem.c
> ===================================================================
> --- linux-2.6.orig/mm/tiny-shmem.c
> +++ linux-2.6/mm/tiny-shmem.c
> @@ -80,6 +80,12 @@ struct file *shmem_file_setup(char *name
> inode->i_nlink = 0; /* It is unlinked */
> init_file(file, shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
> &ramfs_file_operations);
> +
> +#ifndef CONFIG_MMU
> + error = ramfs_nommu_expand_for_mapping(inode, size);
> + if (error)
> + goto close_file;
> +#endif
> return file;
>
> close_file:
> Index: linux-2.6/fs/ramfs/file-nommu.c
> ===================================================================
> --- linux-2.6.orig/fs/ramfs/file-nommu.c
> +++ linux-2.6/fs/ramfs/file-nommu.c
> @@ -58,7 +58,7 @@ const struct inode_operations ramfs_file
> * 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 ramfs_nommu_expand_for_mapping(struct inode *inode, size_t newsize)
> {
> struct pagevec lru_pvec;
> unsigned long npages, xpages, loop, limit;


\
 
 \ /
  Last update: 2008-09-24 21:41    [W:0.059 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site