fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / char / ps3flash.c
index 5a06787..d0c57c2 100644 (file)
@@ -309,9 +309,14 @@ static int ps3flash_flush(struct file *file, fl_owner_t id)
        return ps3flash_writeback(ps3flash_dev);
 }
 
-static int ps3flash_fsync(struct file *file, int datasync)
+static int ps3flash_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 {
-       return ps3flash_writeback(ps3flash_dev);
+       struct inode *inode = file->f_path.dentry->d_inode;
+       int err;
+       mutex_lock(&inode->i_mutex);
+       err = ps3flash_writeback(ps3flash_dev);
+       mutex_unlock(&inode->i_mutex);
+       return err;
 }
 
 static irqreturn_t ps3flash_interrupt(int irq, void *data)