mirror: correct buf_size
PATCH v2 1/1 mirror: correct buf_size
If buf_size % granularity is not 0, mirror_free_init() will do dangerous things.
--- block/mirror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
block/mirror.c +1 -1
@@ -684,7 +684,7 @@ static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, s->is_none_mode = is_none_mode; s->base = base; s->granularity = granularity; - s->buf_size =MAX (buf_size, granularity); + s->buf_size =ROUND_UP (buf_size, granularity); s->dirty_bitmap =bdrv_create_dirty_bitmap (bs, granularity,NULL , errp);if (!s->dirty_bitmap) {
Signature · 1 line
2.1.0
Quoted 15 lines · Wen Congyang
If
buf_size% granularity is not 0,mirror_free_init()will do dangerous things.Signed-off-by Wen Congyang <[email protected]>--- block/mirror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)block/mirror.c +0
-0
block/mirror.c static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, · line 690
Quoted 8 lines
block/mirror.c +1
-1@@ -684,7 +684,7 @@ static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, s->is_none_mode = is_none_mode; s->base = base; s->granularity = granularity; - s->buf_size =MAX (buf_size, granularity); + s->buf_size =ROUND_UP (buf_size, granularity); s->dirty_bitmap =bdrv_create_dirty_bitmap (bs, granularity,NULL , errp);if (!s->dirty_bitmap) {
Quoted 23 lines · Paolo Bonzini
Quoted 20 lines · Wen Congyang
If
buf_size% granularity is not 0,mirror_free_init()will do dangerous things.Signed-off-by Wen Congyang <[email protected]>--- block/mirror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)block/mirror.c +1
-1@@ -684,7 +684,7 @@ static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, s->is_none_mode = is_none_mode; s->base = base; s->granularity = granularity; - s->buf_size =MAX (buf_size, granularity); + s->buf_size =ROUND_UP (buf_size, granularity);
Quoted 5 lines
block/mirror.c static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, · line 690
Quoted 3 lines
block/mirror.c +0
-0s->dirty_bitmap =bdrv_create_dirty_bitmap (bs, granularity,NULL , errp);if (!s->dirty_bitmap) {Reviewed-by Paolo Bonzini <[email protected]>
What if buf_size is negative?
Fam
Quoted 24 lines · Fam Zheng
Quoted 23 lines · Paolo Bonzini
Quoted 20 lines · Wen Congyang
If
buf_size% granularity is not 0,mirror_free_init()will do dangerous things.Signed-off-by Wen Congyang <[email protected]>--- block/mirror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)block/mirror.c +1
-1@@ -684,7 +684,7 @@ static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, s->is_none_mode = is_none_mode; s->base = base; s->granularity = granularity; - s->buf_size =MAX (buf_size, granularity); + s->buf_size =ROUND_UP (buf_size, granularity);
Quoted 7 lines
Quoted 5 lines
block/mirror.c static void mirror_start_job(BlockDriverState *bs, BlockDriverState *target, · line 690
Quoted 3 lines
block/mirror.c +0
-0s->dirty_bitmap =bdrv_create_dirty_bitmap (bs, granularity,NULL , errp);if (!s->dirty_bitmap) {Reviewed-by Paolo Bonzini <[email protected]>What if
buf_sizeis negative?
This will fail:
s->buf = qemu_try_blockalign(bs, s->buf_size);
O:-)
but really that should be checked in mirror_start_job, so that the command fails.
Paolo