diff options
-rw-r--r-- | fs/splice.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/splice.c b/fs/splice.c index 5428b0ff3b6f..2282650bdbe8 100644 --- a/fs/splice.c +++ b/fs/splice.c | |||
@@ -378,10 +378,11 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, | |||
378 | * If in nonblock mode then dont block on waiting | 378 | * If in nonblock mode then dont block on waiting |
379 | * for an in-flight io page | 379 | * for an in-flight io page |
380 | */ | 380 | */ |
381 | if (flags & SPLICE_F_NONBLOCK) | 381 | if (flags & SPLICE_F_NONBLOCK) { |
382 | break; | 382 | if (TestSetPageLocked(page)) |
383 | 383 | break; | |
384 | lock_page(page); | 384 | } else |
385 | lock_page(page); | ||
385 | 386 | ||
386 | /* | 387 | /* |
387 | * page was truncated, stop here. if this isn't the | 388 | * page was truncated, stop here. if this isn't the |