lkml.org 
[lkml]   [2012]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 01/19] mm: Make default vm_ops provide ->page_mkwrite handler
    On Mon,  5 Mar 2012 17:00:59 +0100
    Jan Kara <jack@suse.cz> wrote:

    > --- a/mm/filemap.c
    > +++ b/mm/filemap.c
    > @@ -1759,8 +1759,28 @@ page_not_uptodate:
    > }
    > EXPORT_SYMBOL(filemap_fault);
    >
    > +int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
    > +{
    > + struct page *page = vmf->page;
    > + struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
    > + int ret = VM_FAULT_LOCKED;
    > +
    > + file_update_time(vma->vm_file);
    > + lock_page(page);
    > + if ((page->mapping != inode->i_mapping) ||
    > + (page_offset(page) > i_size_read(inode))) {

    Would benefit from a comment explaining how the page can come to be
    outside i_size, and why we fail in that case.

    I don't think i_mutex is held here, so this test is rather meaningless
    and racy anyway?

    > + unlock_page(page);
    > + ret = VM_FAULT_NOPAGE;
    > + goto out;
    > + }
    > +out:
    > + return ret;
    > +}
    > +EXPORT_SYMBOL(filemap_page_mkwrite);


    \
     
     \ /
      Last update: 2012-03-23 23:47    [W:2.830 / U:2.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site