X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=fs%2Fsplice.c;h=a1e701c27156f78201532e8f701d1af2266744f0;hb=be821b78af9de886571e3565515a59f966d66f42;hp=b30311ba8af6ff23ee45af51d07655e68c98fad2;hpb=15d3b4a26291c170563e2b25ded5de1324f93959;p=linux-2.6-omap-h63xx.git diff --git a/fs/splice.c b/fs/splice.c index b30311ba8af..a1e701c2715 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -371,7 +371,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, * for an in-flight io page */ if (flags & SPLICE_F_NONBLOCK) { - if (TestSetPageLocked(page)) { + if (!trylock_page(page)) { error = -EAGAIN; break; } @@ -898,6 +898,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, if (unlikely(!(out->f_mode & FMODE_WRITE))) return -EBADF; + if (unlikely(out->f_flags & O_APPEND)) + return -EINVAL; + ret = rw_verify_area(WRITE, out, ppos, len); if (unlikely(ret < 0)) return ret;