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@xxxxxxxxx> > >> > >>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. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html