]> Pileus Git - ~andy/linux/blobdiff - fs/pipe.c
Linux 3.14
[~andy/linux] / fs / pipe.c
index 0e0752ef27159f6183dabc1749e49fca8494319a..78fd0d0788dbc465c3d7a6ba674bb64a6ebea25d 100644 (file)
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -663,10 +663,11 @@ out:
                wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLRDNORM);
                kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
        }
-       if (ret > 0) {
+       if (ret > 0 && sb_start_write_trylock(file_inode(filp)->i_sb)) {
                int err = file_update_time(filp);
                if (err)
                        ret = err;
+               sb_end_write(file_inode(filp)->i_sb);
        }
        return ret;
 }