splice: only check do_wakeup in splice_to_pipe() for a real pipe
authorJens Axboe <jens.axboe@oracle.com>
Fri, 15 Jun 2007 11:16:13 +0000 (13:16 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 15 Jun 2007 11:16:13 +0000 (13:16 +0200)
We only ever set do_wakeup to non-zero if the pipe has an inode
backing, so it's pointless to check outside the pipe->inode
check.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fs/splice.c

index 186fad4..e7d7080 100644 (file)
@@ -245,14 +245,15 @@ static ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
                pipe->waiting_writers--;
        }
 
-       if (pipe->inode)
+       if (pipe->inode) {
                mutex_unlock(&pipe->inode->i_mutex);
 
-       if (do_wakeup) {
-               smp_mb();
-               if (waitqueue_active(&pipe->wait))
-                       wake_up_interruptible(&pipe->wait);
-               kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
+               if (do_wakeup) {
+                       smp_mb();
+                       if (waitqueue_active(&pipe->wait))
+                               wake_up_interruptible(&pipe->wait);
+                       kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
+               }
        }
 
        while (page_nr < spd_pages)