loop: don't increment p->offset with (size_t) -EINVAL
authorRoel Kluin <roel.kluin@gmail.com>
Thu, 5 Mar 2009 07:03:53 +0000 (08:03 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Thu, 5 Mar 2009 11:04:57 +0000 (12:04 +0100)
Upon a 'transfer error block' size is set to -EINVAL, but this becomes positive
since size is unsigned: p->offset still gets incremented.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
drivers/block/loop.c

index edbaac6..bf03455 100644 (file)
@@ -392,8 +392,7 @@ lo_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
        struct loop_device *lo = p->lo;
        struct page *page = buf->page;
        sector_t IV;
-       size_t size;
-       int ret;
+       int size, ret;
 
        ret = buf->ops->confirm(pipe, buf);
        if (unlikely(ret))