X-Git-Url: http://git.cascardo.info/?p=cascardo%2Flinux.git;a=blobdiff_plain;f=fs%2Fsplice.c;fp=fs%2Fsplice.c;h=82bc0d64fc38d538b6482adf7d5d279318405069;hp=4cf700d50b4037e6c334b0647cdb81b816f9ef65;hb=90330e689c32e5105265c461c54af6ecec3373fa;hpb=0b2a6f231dcbc7bd543a5aaa23b0ea76ce16e585 diff --git a/fs/splice.c b/fs/splice.c index 4cf700d50b40..82bc0d64fc38 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -415,6 +415,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, */ if (!page->mapping) { unlock_page(page); +retry_lookup: page = find_or_create_page(mapping, index, mapping_gfp_mask(mapping)); @@ -439,13 +440,10 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, error = mapping->a_ops->readpage(in, page); if (unlikely(error)) { /* - * We really should re-lookup the page here, - * but it complicates things a lot. Instead - * lets just do what we already stored, and - * we'll get it the next time we are called. + * Re-lookup the page */ if (error == AOP_TRUNCATED_PAGE) - error = 0; + goto retry_lookup; break; }