Re: [PATCH] loop: don't increment p->offset with (size_t) -EINVAL

From: Jens Axboe
Date: Thu Mar 05 2009 - 02:04:19 EST


On Wed, Mar 04 2009, Roel Kluin wrote:
> 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@xxxxxxxxx>
> ---
> diff --git a/drivers/block/loop.c b/drivers/block/loop.c
> index edbaac6..bf03455 100644
> --- a/drivers/block/loop.c
> +++ b/drivers/block/loop.c
> @@ -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))

Good catch! Applied.

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/