lkml.org 
[lkml]   [2011]   [Sep]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH, RFC] xip: use i_mutex for xip_file_fault
    On Sun, Sep 11, 2011 at 10:25:03AM +0200, Marco Stornelli wrote:
    > Il 10/09/2011 17:56, Al Viro ha scritto:
    > >On Sat, Sep 10, 2011 at 05:31:39PM +0200, Marco Stornelli wrote:
    > >>From: Marco Stornelli<marco.stornelli@gmail.com>
    > >>
    > >>There aren't sufficient sync points for a fs for xip operations. In
    > >>particular for the mmap case. It can be not sufficient to lock/unlock
    > >>to do some operation inside get_xip_mem callback. For xip_file_read
    > >>it's really easy to write a fs specific wrapper, xip_file_write hold
    > >>i_mutex so no problem. With this patch we can avoid concurrent truncate
    > >>operation and xip mmap.
    > >
    > >Umm... I really don't like that; what's going to happen if you have a file
    > >mmapped and do write() to that file from address in that mapping?
    > >
    >
    > Nothing strange. There is a serialization of the operations. Maybe I
    > don't understand the point here.

    write() grabs ->i_mutex on the file it's going to write to. It uses
    copy_from_user() while holding ->i_mutex; that can end up calling ->fault().
    If your data comes from the same file mmapped in your address space, you
    have xip_write_fault() called while you are in xip_file_write() and *already*
    are holding ->i_mutex on the same inode. With your patch it will, AFAICS,
    cheerfully deadlock.



    \
     
     \ /
      Last update: 2011-09-11 13:17    [W:0.044 / U:120.436 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site