From e230d49ae2cefdd72adb30274ebd6fd61da35dea Mon Sep 17 00:00:00 2001 From: Sochin Jiang Date: Thu, 14 May 2020 21:28:06 +0800 Subject: [PATCH] blob: fix a wrong memset parameter A wrong parameter is passed to memset when loading blob->active.clusters, this leads to an unpredictable wrong lba value using thin provision LVOLs while submitting IO requests, thus causes EIO error using QEMU vms. Signed-off-by: Sochin Jiang Change-Id: Iecea80cfa58f7a025603430d666fd9cd4d3fea8b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2431 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Xiaodong Liu Reviewed-by: Changpeng Liu Reviewed-by: Ben Walker Reviewed-by: Tomasz Zawadzki --- lib/blob/blobstore.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/blob/blobstore.c b/lib/blob/blobstore.c index dc5a20ed2..ebbf8d012 100644 --- a/lib/blob/blobstore.c +++ b/lib/blob/blobstore.c @@ -1381,7 +1381,7 @@ _spdk_blob_load_cpl_extents_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr _spdk_blob_load_final(ctx, -ENOMEM); return; } - memset(tmp + blob->active.cluster_array_size, 0, + memset(tmp + sizeof(*blob->active.clusters) * blob->active.cluster_array_size, 0, sizeof(*blob->active.clusters) * (blob->active.num_clusters - blob->active.cluster_array_size)); blob->active.clusters = tmp; blob->active.cluster_array_size = blob->active.num_clusters;